Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
10,987,654,321 AMUNRA
Holders
35
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
14,934.157119485744441323 AMUNRAValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AMUNRA
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-07-16 */ /** /^ /^^ /^^/^^ /^^/^^^ /^^/^^^^^^^ /^ /^ ^^ /^ /^^ /^^^/^^ /^^/^ /^^ /^^/^^ /^^ /^ ^^ /^ /^^ /^^ /^^ / /^^/^^ /^^/^^ /^^ /^^/^^ /^^ /^ /^^ /^^ /^^ /^^ /^^ /^^/^^ /^^/^^ /^^ /^^/^ /^^ /^^ /^^ /^^^^^^ /^^ /^^ /^ /^^/^^ /^^/^^ /^ /^^/^^ /^^ /^^^^^^ /^^ /^^ /^^ /^^ /^^/^^ /^^/^^ /^ ^^/^^ /^^ /^^ /^^ /^^ /^^/^^ /^^ /^^^^^ /^^ /^^/^^ /^^/^^ /^^ 𓂀 RAH - PATH OF OATH 𓂀 Teh one who deserves to survive is teh one who has teh will to make it happen. Teh people shall make teh community and they shall see light 4% Tax ALL TAXES WILL GO TO THE LIQUIDITY POOLS */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } 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); } library Address { function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract AMUNRA is Context,IERC20, Ownable{ using Address for address; string private _name = "The Sun"; string private _symbol = "AMUNRA"; uint8 private _decimals = 18; uint256 totalFeeFortx = 0; uint256 maxWalletTreshold = 3; uint256 maxTxTreshold = 2; uint256 private swapTreshold =2; uint256 private currentThreshold = 20; //Once the token value goes up this number can be decreased (To reduce price impact on asset) uint256 private _totalSupply = 10987654321 * 10**_decimals; uint256 public requiredTokensToSwap = _totalSupply * swapTreshold /1000; mapping (address => uint256) private _balances; mapping (address => bool) private _excludedFromFees; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) public automatedMarketMakerPairs; address _owner; address payable public marketingAddress = payable(0x50D441aC6349746C62Cccd4f2D6D96f2e75478D3); address public NOS = (0x234736F78a6F18d20d3d2eD0544c55d38F26b1CD); address public POO = (0x2B52cC9051991B42A77CA1Dc703f6d15E0981241); uint256 maxWalletAmount = _totalSupply*maxWalletTreshold/100; uint256 maxTxAmount = _totalSupply*maxTxTreshold/100; mapping (address => bool) botWallets; bool botTradeEnabled = false; bool checkWalletSize = true; mapping (address => bool) private _liquidityHolders; mapping (address => bool) private presaleAddresses; uint256 private buyliqFee = 1; uint256 private buyprevLiqFee = 1; uint256 private buymktFee = 1; uint256 private buyPrevmktFee = 1; uint256 private buyNOS = 1; uint256 private buyprevNOS = 1; uint256 private buyPOO = 1; uint256 private buyprevPOO = 1; bool private tradeEnabled = false; uint256 private sellliqFee = 1; uint256 private sellprevLiqFee = 1; uint256 private sellmktFee = 1; uint256 private sellPrevmktFee = 1; uint256 private sellNOS = 1; uint256 private sellprevNOS = 1; uint256 private sellPOO = 1; uint256 private sellprevPOO = 1; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled = true; address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD; uint256 private mktTokens = 0; uint256 private NOSTokens = 0; uint256 private POOTokens = 0; uint256 private liqTokens = 0; event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event tokensSwappedDuringTokenomics(uint256 amount); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); // 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D IUniswapV2Router02 _router; address public uniswapV2Pair; //Balances tracker modifier lockTheSwap{ inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor(){ _balances[_msgSender()] = _totalSupply; //0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D mainnet and all networks IUniswapV2Router02 _uniRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Pair = IUniswapV2Factory(_uniRouter.factory()) .createPair(address(this), _uniRouter.WETH()); _excludedFromFees[owner()] = true; _excludedFromFees[address(this)] = true;// exclude owner and contract instance from fees _router = _uniRouter; _liquidityHolders[address(_router)] = true; _liquidityHolders[owner()] = true; _liquidityHolders[address(this)] = true; _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); emit Transfer(address(0),_msgSender(),_totalSupply); } receive() external payable{} //general token data and tracking of balances to be swapped. function getOwner()external view returns(address){ return owner(); } function currentmktTokens() external view returns (uint256){ return mktTokens; } function currentPZTokens() external view returns (uint256){ return NOSTokens; } function currentLiqTokens() external view returns (uint256){ return liqTokens; } function totalSupply() external view override returns (uint256){ return _totalSupply; } function balanceOf(address account) public view override returns (uint256){ return _balances[account]; } function transfer(address recipient, uint256 amount) external override returns (bool){ _transfer(_msgSender(),recipient,amount); return true; } 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(_msgSender(),spender,amount); return true; } function decimals()external view returns(uint256){ return _decimals; } function name() external view returns (string memory) { return _name; } function symbol() external view returns (string memory){ return _symbol; } function updateMaxTxTreshold(uint256 newVal) public onlyOwner{ maxTxTreshold = newVal; maxTxAmount = _totalSupply*maxTxTreshold/100;// 1% } function updateMaxWalletTreshold(uint256 newVal) public onlyOwner{ maxWalletTreshold = newVal; maxWalletAmount = _totalSupply*maxWalletTreshold/100; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool){ require(amount <= _allowances[sender][_msgSender()], "ERC20: transfer amount exceeds allowance"); _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function addBotWallet (address payable detectedBot, bool isBot) public onlyOwner{ botWallets[detectedBot] = isBot; } function currentbuyliqFee() public view returns (uint256){ return buyliqFee; } function currentbuymktfee() public view returns (uint256){ return buymktFee; } function currentbuyNOSfee() public view returns (uint256){ return buyNOS; } function currentbuyPOOfee() public view returns (uint256){ return buyNOS; } function currentsellLiqFee() public view returns (uint256){ return sellliqFee; } function currentsellmktfee() public view returns (uint256){ return sellmktFee; } function currentsellNOSfee() public view returns (uint256){ return sellNOS; } function currentsellPOOfee() public view returns (uint256){ return sellPOO; } function currentThresholdInt()public view returns (uint256){ return currentThreshold; } function isExcluded(address toCheck)public view returns (bool){ return _excludedFromFees[toCheck]; } function _transfer(address from, address to, uint256 amount) internal{ require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0,"ERC20: transfered amount must be greater than zero"); uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); if(tradeEnabled == false){ require(_liquidityHolders[to] || _liquidityHolders[from],"Cant trade, trade is disabled"); } if(_liquidityHolders[to]==false && _liquidityHolders[from]==false){ require(amount <= maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } uint256 inContractBalance = balanceOf(address(this)); if(inContractBalance >=requiredTokensToSwap && !inSwapAndLiquify && from != uniswapV2Pair && swapAndLiquifyEnabled){ if(inContractBalance >= requiredTokensToSwap ){ inContractBalance = requiredTokensToSwap; swapForTokenomics(inContractBalance); } } bool takeFees = true; if(_excludedFromFees[from] || _excludedFromFees[to]) { totalFeeFortx = 0; takeFees = false; } uint256 mktAmount = 0; uint256 NOSAmount = 0; // Amount to be added to prize pool. uint256 POOAmount = 0; // Amount to be added to prize pool. uint256 liqAmount = 0; // Amount to be added to liquidity. if(takeFees){ //bot fees if(botWallets[from] == true||botWallets[to]==true){ revert("No bots allowed to trade"); } //Selling fees if (automatedMarketMakerPairs[to] && to != address(_router) ){ totalFeeFortx = 0; mktAmount = amount * sellmktFee/100; liqAmount = amount * sellliqFee/100; NOSAmount = amount * sellNOS/100; POOAmount = amount * sellPOO/100; totalFeeFortx = mktAmount + liqAmount + NOSAmount + POOAmount; } //Buy Fees else if(automatedMarketMakerPairs[from] && from != address(_router)) { totalFeeFortx = 0; mktAmount = amount * buymktFee/100; liqAmount = amount * buyliqFee/100; NOSAmount = amount * buyNOS/100; POOAmount = amount * buyPOO/100; totalFeeFortx = mktAmount + liqAmount + NOSAmount + POOAmount; } } _balances[from] = senderBalance - amount; _balances[to] += amount - mktAmount - NOSAmount - POOAmount - liqAmount; if(liqAmount != 0) { _balances[address(this)] += totalFeeFortx; //tLiqTotal += liqAmount; liqTokens += liqAmount; NOSTokens += NOSAmount; POOTokens += POOAmount; mktTokens += mktAmount; emit Transfer(from, address(this), totalFeeFortx); } emit Transfer(from, to,amount-totalFeeFortx); } function swapForTokenomics(uint256 balanceToswap) private lockTheSwap{ swapAndLiquify(liqTokens); swapTokensForETHmkt(mktTokens); SwapForNOS(NOSTokens); SwapForPOO(POOTokens); uint256 remainingETHBalance = address(this).balance; processNOS(remainingETHBalance,NOS); emit tokensSwappedDuringTokenomics(balanceToswap); mktTokens = 0; NOSTokens = 0; POOTokens = 0; liqTokens = 0; } function addLimitExempt(address newAddress)external onlyOwner{ _liquidityHolders[newAddress] = true; } function swapTokensForETHmkt(uint256 amount)private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), amount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // Accept any amount of ETH. path, marketingAddress, block.timestamp ); } function SwapForNOS(uint256 amount)private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), amount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // Accept any amount of ETH. path, address(this), block.timestamp ); } function updateNOS(address newToken)private{ NOS = newToken; } function processNOS(uint256 ethAmount, address rewardToken) internal { // generate the uniswap pair path of weth -> eth address[] memory path = new address[](2); path[0] = _router.WETH(); path[1] = rewardToken; // make the swap _router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}( 0, // accept any amount of Ethereum path, address(this), block.timestamp ); } function SwapForPOO(uint256 amount)private { address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), amount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( amount, 0, // Accept any amount of ETH. path, address(this), block.timestamp ); } function updatePOO(address newToken)private{ POO = newToken; } function processPOO(uint256 ethAmount, address rewardToken) internal { // generate the uniswap pair path of weth -> eth address[] memory path = new address[](2); path[0] = _router.WETH(); path[1] = rewardToken; // make the swap _router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}( 0, // accept any amount of Ethereum path, address(this), block.timestamp ); } function unstuckTokens (IERC20 tokenToClear, address payable destination, uint256 amount) public onlyOwner{ //uint256 contractBalance = tokenToClear.balanceOf(address(this)); tokenToClear.transfer(destination, amount); } function unstuckETH(address payable destination) public onlyOwner{ uint256 ethBalance = address(this).balance; payable(destination).transfer(ethBalance); } function tradeStatus(bool status) public onlyOwner{ tradeEnabled = status; } function swapAndLiquify(uint256 liqTokensPassed) private { uint256 half = liqTokensPassed / 2; uint256 otherHalf = liqTokensPassed - half; uint256 initialBalance = address(this).balance; swapTokensForETH(half); uint256 newBalance = address(this).balance - (initialBalance); addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half,newBalance,otherHalf); } function swapTokensForETH(uint256 tokenAmount) private{ address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), tokenAmount); _router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // Accept any amount of ETH. path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount,uint256 ethAmount) private{ _approve(address(this), address(_router), tokenAmount); _router.addLiquidityETH{value:ethAmount}( address(this), tokenAmount, 0, 0, deadAddress,// tr block.timestamp ); } function _approve(address owner,address spender, uint256 amount) internal{ require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } //Fees related functions function addToExcluded(address toExclude) public onlyOwner{ _excludedFromFees[toExclude] = true; } function removeFromExcluded(address toRemove) public onlyOwner{ _excludedFromFees[toRemove] = false; } function excludePresaleAddresses(address router, address presale) external onlyOwner { _liquidityHolders[address(router)] = true; _liquidityHolders[presale] = true; presaleAddresses[address(router)] = true; presaleAddresses[presale] = true; } function startPresaleStatus()public onlyOwner{ buymktFee = 0; sellmktFee =0; buyliqFee =0; sellliqFee =0; buyNOS =0; sellNOS = 0; buyPOO =0; sellPOO = 0; setSwapAndLiquify(false); } function endPresaleStatus() public onlyOwner{ buymktFee = 1; buyliqFee = 1; buyNOS = 1; buyPOO = 1; sellmktFee = 1; sellliqFee = 1; sellNOS = 1; sellPOO = 1; setSwapAndLiquify(true); } function updateThreshold(uint newThreshold) public onlyOwner{ currentThreshold = newThreshold; } function setSwapAndLiquify(bool _enabled) public onlyOwner{ swapAndLiquifyEnabled = _enabled; } //Marketing related function setMktAddress(address newAddress) external onlyOwner{ marketingAddress = payable(newAddress); } function transferAssetsETH(address payable to, uint256 amount) internal{ to.transfer(amount); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updatecurrentbuyliqFee(uint256 newAmount) public onlyOwner{ buyliqFee = newAmount; } function updatecurrentbuymktfee(uint256 newAmount) public onlyOwner{ buymktFee= newAmount; } function updatecurrentbuyNOSfee(uint256 newAmount) public onlyOwner{ buyNOS= newAmount; } function updatecurrentbuyPOOfee(uint256 newAmount) public onlyOwner{ buyPOO= newAmount; } function updatecurrentsellLiqFee(uint256 newAmount) public onlyOwner{ sellliqFee= newAmount; } function updatecurrentsellmktfee(uint256 newAmount)public onlyOwner{ sellmktFee= newAmount; } function updatecurrentsellyNOSfee(uint256 newAmount) public onlyOwner{ sellNOS= newAmount; } function updatecurrentsellyPOOfee(uint256 newAmount) public onlyOwner{ sellPOO= newAmount; } function currentMaxWallet() public view returns(uint256){ return maxWalletAmount; } function currentMaxTx() public view returns(uint256){ return maxTxAmount; } function updateSwapTreshold(uint256 newVal) public onlyOwner{ swapTreshold = newVal; requiredTokensToSwap = _totalSupply*swapTreshold/1000; } function currentTradeStatus() public view returns (bool){ return tradeEnabled; } function currentSwapTreshold() public view returns(uint256){ return swapTreshold; } function currentTokensToSwap() public view returns(uint256){ return requiredTokensToSwap; } } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; }
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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"tokensSwappedDuringTokenomics","type":"event"},{"inputs":[],"name":"NOS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"detectedBot","type":"address"},{"internalType":"bool","name":"isBot","type":"bool"}],"name":"addBotWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"addLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"toExclude","type":"address"}],"name":"addToExcluded","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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentLiqTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentPZTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentSwapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentThresholdInt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentTradeStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyNOSfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyPOOfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuyliqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentbuymktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentmktTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellLiqFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellNOSfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellPOOfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"currentsellmktfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"endPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"presale","type":"address"}],"name":"excludePresaleAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toCheck","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"toRemove","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"requiredTokensToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startPresaleStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"tradeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"}],"name":"unstuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenToClear","type":"address"},{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxTxTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateMaxWalletTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newVal","type":"uint256"}],"name":"updateSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyNOSfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyPOOfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuyliqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentbuymktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellLiqFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellmktfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyNOSfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updatecurrentsellyPOOfee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a06040526040518060400160405280600781526020017f5468652053756e00000000000000000000000000000000000000000000000000815250600190805190602001906200005192919062000a6e565b506040518060400160405280600681526020017f414d554e52410000000000000000000000000000000000000000000000000000815250600290805190602001906200009f92919062000a6e565b506012600360006101000a81548160ff021916908360ff16021790555060006004556003600555600260065560026007556014600855600360009054906101000a900460ff16600a620000f3919062000c66565b64028eea4cb162000105919062000da3565b6009556103e86007546009546200011d919062000da3565b62000129919062000bd3565b600a557350d441ac6349746c62cccd4f2d6d96f2e75478d3601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073234736f78a6f18d20d3d2ed0544c55d38f26b1cd601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550732b52cc9051991b42a77ca1dc703f6d15e0981241601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060646005546009546200023f919062000da3565b6200024b919062000bd3565b601355606460065460095462000262919062000da3565b6200026e919062000bd3565b6014556000601660006101000a81548160ff0219169083151502179055506001601660016101000a81548160ff02191690831515021790555060016019556001601a556001601b556001601c556001601d556001601e556001601f5560016020556000602160006101000a81548160ff021916908315150217905550600160225560016023556001602455600160255560016026556001602755600160285560016029556001602a60016101000a81548160ff02191690831515021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1660601b8152506000602b556000602c556000602d556000602e553480156200038657600080fd5b50620003a76200039b620008d860201b60201c565b620008e060201b60201c565b600954600b6000620003be620008d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200045c57600080fd5b505afa15801562000471573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000497919062000b35565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620004fa57600080fd5b505afa1580156200050f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000535919062000b35565b6040518363ffffffff1660e01b81526004016200055492919062000b89565b602060405180830381600087803b1580156200056f57600080fd5b505af115801562000584573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005aa919062000b35565b603060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c600062000600620009a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080602f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160176000602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760006200077a620009a460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000858603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620009cd60201b60201c565b62000868620008d860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620008c9919062000bb6565b60405180910390a35062000f3e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b82805462000a7c9062000e4f565b90600052602060002090601f01602090048101928262000aa0576000855562000aec565b82601f1062000abb57805160ff191683800117855562000aec565b8280016001018555821562000aec579182015b8281111562000aeb57825182559160200191906001019062000ace565b5b50905062000afb919062000aff565b5090565b5b8082111562000b1a57600081600090555060010162000b00565b5090565b60008151905062000b2f8162000f24565b92915050565b60006020828403121562000b4e5762000b4d62000f12565b5b600062000b5e8482850162000b1e565b91505092915050565b62000b728162000e04565b82525050565b62000b838162000e38565b82525050565b600060408201905062000ba0600083018562000b67565b62000baf602083018462000b67565b9392505050565b600060208201905062000bcd600083018462000b78565b92915050565b600062000be08262000e38565b915062000bed8362000e38565b92508262000c005762000bff62000eb4565b5b828204905092915050565b6000808291508390505b600185111562000c5d5780860481111562000c355762000c3462000e85565b5b600185161562000c455780820291505b808102905062000c558562000f17565b945062000c15565b94509492505050565b600062000c738262000e38565b915062000c808362000e42565b925062000caf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cb7565b905092915050565b60008262000cc9576001905062000d9c565b8162000cd9576000905062000d9c565b816001811462000cf2576002811462000cfd5762000d33565b600191505062000d9c565b60ff84111562000d125762000d1162000e85565b5b8360020a91508482111562000d2c5762000d2b62000e85565b5b5062000d9c565b5060208310610133831016604e8410600b841016171562000d6d5782820a90508381111562000d675762000d6662000e85565b5b62000d9c565b62000d7c848484600162000c0b565b9250905081840481111562000d965762000d9562000e85565b5b81810290505b9392505050565b600062000db08262000e38565b915062000dbd8362000e38565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000df95762000df862000e85565b5b828202905092915050565b600062000e118262000e18565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000600282049050600182168062000e6857607f821691505b6020821081141562000e7f5762000e7e62000ee3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b60008160011c9050919050565b62000f2f8162000e04565b811462000f3b57600080fd5b50565b60805160601c61579262000f64600039600081816113ac01526144bd01526157926000f3fe6080604052600436106103d25760003560e01c80638ace0a9e116101fd578063b4d95a9311610118578063d15bcf0f116100ab578063e1370dd31161007a578063e1370dd314610e1e578063edcf19b214610e49578063f2fde38b14610e72578063f7da678514610e9b578063f953cf3a14610ec4576103d9565b8063d15bcf0f14610d62578063d7d7442f14610d8d578063dd62ed3e14610db6578063ddcf9b9814610df3576103d9565b8063bf9eb540116100e7578063bf9eb54014610caa578063cb66453414610cd3578063cba0e99614610cfc578063d1294d4c14610d39576103d9565b8063b4d95a9314610bee578063b62496f514610c17578063b934f33b14610c54578063bf9b015914610c7f576103d9565b80639b136da411610190578063a7a074521161015f578063a7a0745214610b46578063a8c40a4214610b6f578063a9059cbb14610b9a578063b195b83914610bd7576103d9565b80639b136da414610a9c578063a04bdc8114610ac7578063a5ece94114610af2578063a6c38f5914610b1d576103d9565b806395d89b41116101cc57806395d89b41146109f657806397385fa914610a215780639878665f14610a4a5780639a7a23d614610a73576103d9565b80638ace0a9e1461094e5780638cd0260c146109775780638da5cb5b146109a057806390f50283146109cb576103d9565b80634a74bb02116102ed57806370a08231116102805780637ffb40331161024f5780637ffb4033146108a6578063801527ce146108d15780638628c23f146108fa578063893d20e814610923576103d9565b806370a08231146107fe578063715018a61461083b578063728987a4146108525780637a94d54b1461087d576103d9565b806364c16163116102bc57806364c16163146107545780636573c4df1461077f5780636ce5a8a5146107a85780636df3333a146107d3576103d9565b80634a74bb02146106aa5780634bd7ace5146106d55780635297defd146107005780635be76f111461072b576103d9565b806322788f8611610365578063313ce56711610334578063313ce56714610600578063487a69051461062b57806349bd5a5e146106565780634a0e963c14610681576103d9565b806322788f861461054457806323b872dd1461056f57806327c8f835146105ac5780632d03420b146105d7576103d9565b806313b4a7f4116103a157806313b4a7f41461049a57806314c0eaf9146104c357806318160ddd146104ee578063220f669614610519576103d9565b806306fdde03146103de5780630882a8631461040957806308de6adf14610432578063095ea7b31461045d576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506103f3610edb565b6040516104009190614d0c565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190614886565b610f6d565b005b34801561043e57600080fd5b50610447610ff3565b6040516104549190614ece565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f9190614799565b610ffd565b6040516104919190614ca5565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc91906146c6565b61101b565b005b3480156104cf57600080fd5b506104d86111fb565b6040516104e59190614ece565b60405180910390f35b3480156104fa57600080fd5b50610503611205565b6040516105109190614ece565b60405180910390f35b34801561052557600080fd5b5061052e61120f565b60405161053b9190614ca5565b60405180910390f35b34801561055057600080fd5b50610559611222565b6040516105669190614ece565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614706565b61122c565b6040516105a39190614ca5565b60405180910390f35b3480156105b857600080fd5b506105c16113aa565b6040516105ce9190614be5565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f991906147d9565b6113ce565b005b34801561060c57600080fd5b50610615611467565b6040516106229190614ece565b60405180910390f35b34801561063757600080fd5b50610640611481565b60405161064d9190614ece565b60405180910390f35b34801561066257600080fd5b5061066b61148b565b6040516106789190614be5565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a391906145ff565b6114b1565b005b3480156106b657600080fd5b506106bf611588565b6040516106cc9190614ca5565b60405180910390f35b3480156106e157600080fd5b506106ea61159b565b6040516106f79190614ece565b60405180910390f35b34801561070c57600080fd5b506107156115a5565b6040516107229190614ece565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d9190614659565b6115af565b005b34801561076057600080fd5b5061076961167b565b6040516107769190614ece565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190614886565b611685565b005b3480156107b457600080fd5b506107bd61172d565b6040516107ca9190614ece565b60405180910390f35b3480156107df57600080fd5b506107e8611737565b6040516107f59190614ece565b60405180910390f35b34801561080a57600080fd5b50610825600480360381019061082091906145ff565b611741565b6040516108329190614ece565b60405180910390f35b34801561084757600080fd5b5061085061178a565b005b34801561085e57600080fd5b50610867611812565b6040516108749190614ece565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190614886565b61181c565b005b3480156108b257600080fd5b506108bb6118a2565b6040516108c89190614ece565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f391906147d9565b6118ac565b005b34801561090657600080fd5b50610921600480360381019061091c9190614886565b611945565b005b34801561092f57600080fd5b506109386119cb565b6040516109459190614be5565b60405180910390f35b34801561095a57600080fd5b5061097560048036038101906109709190614886565b6119da565b005b34801561098357600080fd5b5061099e60048036038101906109999190614886565b611a60565b005b3480156109ac57600080fd5b506109b5611ae6565b6040516109c29190614be5565b60405180910390f35b3480156109d757600080fd5b506109e0611b0f565b6040516109ed9190614ece565b60405180910390f35b348015610a0257600080fd5b50610a0b611b19565b604051610a189190614d0c565b60405180910390f35b348015610a2d57600080fd5b50610a486004803603810190610a439190614886565b611bab565b005b348015610a5657600080fd5b50610a716004803603810190610a6c9190614886565b611c31565b005b348015610a7f57600080fd5b50610a9a6004803603810190610a959190614759565b611cb7565b005b348015610aa857600080fd5b50610ab1611dd2565b604051610abe9190614ece565b60405180910390f35b348015610ad357600080fd5b50610adc611ddc565b604051610ae99190614ece565b60405180910390f35b348015610afe57600080fd5b50610b07611de2565b604051610b149190614c00565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190614686565b611e08565b005b348015610b5257600080fd5b50610b6d6004803603810190610b689190614886565b611edf565b005b348015610b7b57600080fd5b50610b84611f87565b604051610b919190614be5565b60405180910390f35b348015610ba657600080fd5b50610bc16004803603810190610bbc9190614799565b611fad565b604051610bce9190614ca5565b60405180910390f35b348015610be357600080fd5b50610bec611fcb565b005b348015610bfa57600080fd5b50610c156004803603810190610c1091906145ff565b612093565b005b348015610c2357600080fd5b50610c3e6004803603810190610c3991906145ff565b61216a565b604051610c4b9190614ca5565b60405180910390f35b348015610c6057600080fd5b50610c6961218a565b604051610c769190614be5565b60405180910390f35b348015610c8b57600080fd5b50610c946121b0565b604051610ca19190614ece565b60405180910390f35b348015610cb657600080fd5b50610cd16004803603810190610ccc91906145ff565b6121ba565b005b348015610cdf57600080fd5b50610cfa6004803603810190610cf591906145ff565b61227a565b005b348015610d0857600080fd5b50610d236004803603810190610d1e91906145ff565b612351565b604051610d309190614ca5565b60405180910390f35b348015610d4557600080fd5b50610d606004803603810190610d5b9190614886565b6123a7565b005b348015610d6e57600080fd5b50610d77612450565b604051610d849190614ca5565b60405180910390f35b348015610d9957600080fd5b50610db46004803603810190610daf9190614886565b612467565b005b348015610dc257600080fd5b50610ddd6004803603810190610dd891906146c6565b6124ed565b604051610dea9190614ece565b60405180910390f35b348015610dff57600080fd5b50610e08612574565b604051610e159190614ece565b60405180910390f35b348015610e2a57600080fd5b50610e3361257e565b604051610e409190614ece565b60405180910390f35b348015610e5557600080fd5b50610e706004803603810190610e6b9190614886565b612588565b005b348015610e7e57600080fd5b50610e996004803603810190610e9491906145ff565b61260e565b005b348015610ea757600080fd5b50610ec26004803603810190610ebd9190614833565b612706565b005b348015610ed057600080fd5b50610ed9612815565b005b606060018054610eea90615225565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1690615225565b8015610f635780601f10610f3857610100808354040283529160200191610f63565b820191906000526020600020905b815481529060010190602001808311610f4657829003601f168201915b5050505050905090565b610f756128dd565b73ffffffffffffffffffffffffffffffffffffffff16610f93611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090614e4e565b60405180910390fd5b8060198190555050565b6000602854905090565b600061101161100a6128dd565b84846128e5565b6001905092915050565b6110236128dd565b73ffffffffffffffffffffffffffffffffffffffff16611041611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90614e4e565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602c54905090565b6000600954905090565b602a60009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112776128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90614e2e565b60405180910390fd5b6112ff848484612ab0565b61139f8461130b6128dd565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113556128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139a919061510a565b6128e5565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6113d66128dd565b73ffffffffffffffffffffffffffffffffffffffff166113f4611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190614e4e565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114b96128dd565b73ffffffffffffffffffffffffffffffffffffffff166114d7611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490614e4e565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602a60019054906101000a900460ff1681565b6000601954905090565b6000602454905090565b6115b76128dd565b73ffffffffffffffffffffffffffffffffffffffff166115d5611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461162b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162290614e4e565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611676573d6000803e3d6000fd5b505050565b6000602e54905090565b61168d6128dd565b73ffffffffffffffffffffffffffffffffffffffff166116ab611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890614e4e565b60405180910390fd5b80600581905550606460055460095461171a91906150b0565b611724919061507f565b60138190555050565b6000601d54905090565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117926128dd565b73ffffffffffffffffffffffffffffffffffffffff166117b0611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd90614e4e565b60405180910390fd5b61181060006135dd565b565b6000602654905090565b6118246128dd565b73ffffffffffffffffffffffffffffffffffffffff16611842611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f90614e4e565b60405180910390fd5b80601d8190555050565b6000601d54905090565b6118b46128dd565b73ffffffffffffffffffffffffffffffffffffffff166118d2611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614e4e565b60405180910390fd5b80602a60016101000a81548160ff02191690831515021790555050565b61194d6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661196b611ae6565b73ffffffffffffffffffffffffffffffffffffffff16146119c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b890614e4e565b60405180910390fd5b8060248190555050565b60006119d5611ae6565b905090565b6119e26128dd565b73ffffffffffffffffffffffffffffffffffffffff16611a00611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d90614e4e565b60405180910390fd5b8060288190555050565b611a686128dd565b73ffffffffffffffffffffffffffffffffffffffff16611a86611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390614e4e565b60405180910390fd5b8060228190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602254905090565b606060028054611b2890615225565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5490615225565b8015611ba15780601f10611b7657610100808354040283529160200191611ba1565b820191906000526020600020905b815481529060010190602001808311611b8457829003601f168201915b5050505050905090565b611bb36128dd565b73ffffffffffffffffffffffffffffffffffffffff16611bd1611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1e90614e4e565b60405180910390fd5b80601f8190555050565b611c396128dd565b73ffffffffffffffffffffffffffffffffffffffff16611c57611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490614e4e565b60405180910390fd5b8060268190555050565b611cbf6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611cdd611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90614e4e565b60405180910390fd5b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614d8e565b60405180910390fd5b611dce82826136a1565b5050565b6000601b54905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e106128dd565b73ffffffffffffffffffffffffffffffffffffffff16611e2e611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7b90614e4e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611ee76128dd565b73ffffffffffffffffffffffffffffffffffffffff16611f05611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290614e4e565b60405180910390fd5b806006819055506064600654600954611f7491906150b0565b611f7e919061507f565b60148190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fc1611fba6128dd565b8484612ab0565b6001905092915050565b611fd36128dd565b73ffffffffffffffffffffffffffffffffffffffff16611ff1611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e90614e4e565b60405180910390fd5b6000601b819055506000602481905550600060198190555060006022819055506000601d8190555060006026819055506000601f81905550600060288190555061209160006118ac565b565b61209b6128dd565b73ffffffffffffffffffffffffffffffffffffffff166120b9611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690614e4e565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6121c26128dd565b73ffffffffffffffffffffffffffffffffffffffff166121e0611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d90614e4e565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122826128dd565b73ffffffffffffffffffffffffffffffffffffffff166122a0611ae6565b73ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed90614e4e565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6123af6128dd565b73ffffffffffffffffffffffffffffffffffffffff166123cd611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241a90614e4e565b60405180910390fd5b806007819055506103e860075460095461243d91906150b0565b612447919061507f565b600a8190555050565b6000602160009054906101000a900460ff16905090565b61246f6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661248d611ae6565b73ffffffffffffffffffffffffffffffffffffffff16146124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da90614e4e565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602b54905090565b6000601354905090565b6125906128dd565b73ffffffffffffffffffffffffffffffffffffffff166125ae611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb90614e4e565b60405180910390fd5b80601b8190555050565b6126166128dd565b73ffffffffffffffffffffffffffffffffffffffff16612634611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461268a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268190614e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f190614d4e565b60405180910390fd5b612703816135dd565b50565b61270e6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661272c611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277990614e4e565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016127bd929190614c1b565b602060405180830381600087803b1580156127d757600080fd5b505af11580156127eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280f9190614806565b50505050565b61281d6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661283b611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614e4e565b60405180910390fd5b6001601b8190555060016019819055506001601d819055506001601f8190555060016024819055506001602281905550600160268190555060016028819055506128db60016118ac565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90614eae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc90614d6e565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aa39190614ece565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1790614e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8790614d2e565b60405180910390fd5b60008111612bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bca90614dee565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5190614dae565b60405180910390fd5b60001515602160009054906101000a900460ff1615151415612d5757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d175750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4d90614e0e565b60405180910390fd5b5b60001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612e07575060001515601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612e5257601454821115612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4890614dce565b60405180910390fd5b5b6000612e5d30611741565b9050600a548110158015612e7e5750602a60009054906101000a900460ff16155b8015612ed85750603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ef05750602a60019054906101000a900460ff165b15612f0e57600a548110612f0d57600a549050612f0c81613742565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fb55750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fc7576000600481905550600090505b60008060008084156133625760011515601560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480613082575060011515601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b990614e6e565b60405180910390fd5b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131695750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b1561321357600060048190555060646024548961318691906150b0565b613190919061507f565b93506064602254896131a291906150b0565b6131ac919061507f565b90506064602654896131be91906150b0565b6131c8919061507f565b92506064602854896131da91906150b0565b6131e4919061507f565b9150818382866131f49190615029565b6131fe9190615029565b6132089190615029565b600481905550613361565b600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132ba5750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156133605760006004819055506064601b54896132d791906150b0565b6132e1919061507f565b93506064601954896132f391906150b0565b6132fd919061507f565b90506064601d548961330f91906150b0565b613319919061507f565b92506064601f548961332b91906150b0565b613335919061507f565b9150818382866133459190615029565b61334f9190615029565b6133599190615029565b6004819055505b5b5b878761336e919061510a565b600b60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808284868b6133c0919061510a565b6133ca919061510a565b6133d4919061510a565b6133de919061510a565b600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461342c9190615029565b925050819055506000811461355f57600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461348c9190615029565b9250508190555080602e60008282546134a59190615029565b9250508190555082602c60008282546134be9190615029565b9250508190555081602d60008282546134d79190615029565b9250508190555083602b60008282546134f09190615029565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516135569190614ece565b60405180910390a35b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b6135bc919061510a565b6040516135c99190614ece565b60405180910390a350505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602a60006101000a81548160ff021916908315150217905550613768602e54613830565b613773602b546138bb565b61377e602c54613b2f565b613789602d54613d81565b60004790506137ba81601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613fd3565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904826040516137e99190614ece565b60405180910390a16000602b819055506000602c819055506000602d819055506000602e81905550506000602a60006101000a81548160ff02191690831515021790555050565b600060028261383f919061507f565b90506000818361384f919061510a565b9050600047905061385f836141f8565b6000814761386d919061510a565b9050613879838261444a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516138ac93929190614f9d565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156138d8576138d7615313565b5b6040519080825280602002602001820160405280156139065781602001602082028036833780820191505090505b509050308160008151811061391e5761391d6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156139c057600080fd5b505afa1580156139d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f8919061462c565b81600181518110613a0c57613a0b6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a7330602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613af9959493929190614ee9565b600060405180830381600087803b158015613b1357600080fd5b505af1158015613b27573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613b4c57613b4b615313565b5b604051908082528060200260200182016040528015613b7a5781602001602082028036833780820191505090505b5090503081600081518110613b9257613b916152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c3457600080fd5b505afa158015613c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6c919061462c565b81600181518110613c8057613c7f6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ce730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d4b959493929190614f43565b600060405180830381600087803b158015613d6557600080fd5b505af1158015613d79573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613d9e57613d9d615313565b5b604051908082528060200260200182016040528015613dcc5781602001602082028036833780820191505090505b5090503081600081518110613de457613de36152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e8657600080fd5b505afa158015613e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ebe919061462c565b81600181518110613ed257613ed16152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f3930602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f9d959493929190614f43565b600060405180830381600087803b158015613fb757600080fd5b505af1158015613fcb573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613ff057613fef615313565b5b60405190808252806020026020018201604052801561401e5781602001602082028036833780820191505090505b509050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561408957600080fd5b505afa15801561409d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c1919061462c565b816000815181106140d5576140d46152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110614124576141236152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016141c19493929190614cc0565b6000604051808303818588803b1580156141da57600080fd5b505af11580156141ee573d6000803e3d6000fd5b5050505050505050565b6000600267ffffffffffffffff81111561421557614214615313565b5b6040519080825280602002602001820160405280156142435781602001602082028036833780820191505090505b509050308160008151811061425b5761425a6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142fd57600080fd5b505afa158015614311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614335919061462c565b81600181518110614349576143486152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143b030602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614414959493929190614f43565b600060405180830381600087803b15801561442e57600080fd5b505af1158015614442573d6000803e3d6000fd5b505050505050565b61447730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b81526004016144fe96959493929190614c44565b6060604051808303818588803b15801561451757600080fd5b505af115801561452b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061455091906148b3565b5050505050565b600081359050614566816156e9565b92915050565b60008151905061457b816156e9565b92915050565b60008135905061459081615700565b92915050565b6000813590506145a581615717565b92915050565b6000815190506145ba81615717565b92915050565b6000813590506145cf8161572e565b92915050565b6000813590506145e481615745565b92915050565b6000815190506145f981615745565b92915050565b60006020828403121561461557614614615342565b5b600061462384828501614557565b91505092915050565b60006020828403121561464257614641615342565b5b60006146508482850161456c565b91505092915050565b60006020828403121561466f5761466e615342565b5b600061467d84828501614581565b91505092915050565b6000806040838503121561469d5761469c615342565b5b60006146ab85828601614581565b92505060206146bc85828601614596565b9150509250929050565b600080604083850312156146dd576146dc615342565b5b60006146eb85828601614557565b92505060206146fc85828601614557565b9150509250929050565b60008060006060848603121561471f5761471e615342565b5b600061472d86828701614557565b935050602061473e86828701614557565b925050604061474f868287016145d5565b9150509250925092565b600080604083850312156147705761476f615342565b5b600061477e85828601614557565b925050602061478f85828601614596565b9150509250929050565b600080604083850312156147b0576147af615342565b5b60006147be85828601614557565b92505060206147cf858286016145d5565b9150509250929050565b6000602082840312156147ef576147ee615342565b5b60006147fd84828501614596565b91505092915050565b60006020828403121561481c5761481b615342565b5b600061482a848285016145ab565b91505092915050565b60008060006060848603121561484c5761484b615342565b5b600061485a868287016145c0565b935050602061486b86828701614581565b925050604061487c868287016145d5565b9150509250925092565b60006020828403121561489c5761489b615342565b5b60006148aa848285016145d5565b91505092915050565b6000806000606084860312156148cc576148cb615342565b5b60006148da868287016145ea565b93505060206148eb868287016145ea565b92505060406148fc868287016145ea565b9150509250925092565b6000614912838361493c565b60208301905092915050565b614927816151aa565b82525050565b61493681615150565b82525050565b6149458161513e565b82525050565b6149548161513e565b82525050565b600061496582614fe4565b61496f8185615007565b935061497a83614fd4565b8060005b838110156149ab5781516149928882614906565b975061499d83614ffa565b92505060018101905061497e565b5085935050505092915050565b6149c181615162565b82525050565b6149d0816151bc565b82525050565b60006149e182614fef565b6149eb8185615018565b93506149fb8185602086016151f2565b614a0481615347565b840191505092915050565b6000614a1c602383615018565b9150614a2782615358565b604082019050919050565b6000614a3f602683615018565b9150614a4a826153a7565b604082019050919050565b6000614a62602283615018565b9150614a6d826153f6565b604082019050919050565b6000614a85603983615018565b9150614a9082615445565b604082019050919050565b6000614aa8602683615018565b9150614ab382615494565b604082019050919050565b6000614acb602883615018565b9150614ad6826154e3565b604082019050919050565b6000614aee603283615018565b9150614af982615532565b604082019050919050565b6000614b11601d83615018565b9150614b1c82615581565b602082019050919050565b6000614b34602883615018565b9150614b3f826155aa565b604082019050919050565b6000614b57602083615018565b9150614b62826155f9565b602082019050919050565b6000614b7a601883615018565b9150614b8582615622565b602082019050919050565b6000614b9d602583615018565b9150614ba88261564b565b604082019050919050565b6000614bc0602483615018565b9150614bcb8261569a565b604082019050919050565b614bdf816151a0565b82525050565b6000602082019050614bfa600083018461494b565b92915050565b6000602082019050614c15600083018461492d565b92915050565b6000604082019050614c30600083018561491e565b614c3d6020830184614bd6565b9392505050565b600060c082019050614c59600083018961494b565b614c666020830188614bd6565b614c7360408301876149c7565b614c8060608301866149c7565b614c8d608083018561494b565b614c9a60a0830184614bd6565b979650505050505050565b6000602082019050614cba60008301846149b8565b92915050565b6000608082019050614cd560008301876149c7565b8181036020830152614ce7818661495a565b9050614cf6604083018561494b565b614d036060830184614bd6565b95945050505050565b60006020820190508181036000830152614d2681846149d6565b905092915050565b60006020820190508181036000830152614d4781614a0f565b9050919050565b60006020820190508181036000830152614d6781614a32565b9050919050565b60006020820190508181036000830152614d8781614a55565b9050919050565b60006020820190508181036000830152614da781614a78565b9050919050565b60006020820190508181036000830152614dc781614a9b565b9050919050565b60006020820190508181036000830152614de781614abe565b9050919050565b60006020820190508181036000830152614e0781614ae1565b9050919050565b60006020820190508181036000830152614e2781614b04565b9050919050565b60006020820190508181036000830152614e4781614b27565b9050919050565b60006020820190508181036000830152614e6781614b4a565b9050919050565b60006020820190508181036000830152614e8781614b6d565b9050919050565b60006020820190508181036000830152614ea781614b90565b9050919050565b60006020820190508181036000830152614ec781614bb3565b9050919050565b6000602082019050614ee36000830184614bd6565b92915050565b600060a082019050614efe6000830188614bd6565b614f0b60208301876149c7565b8181036040830152614f1d818661495a565b9050614f2c606083018561491e565b614f396080830184614bd6565b9695505050505050565b600060a082019050614f586000830188614bd6565b614f6560208301876149c7565b8181036040830152614f77818661495a565b9050614f86606083018561494b565b614f936080830184614bd6565b9695505050505050565b6000606082019050614fb26000830186614bd6565b614fbf6020830185614bd6565b614fcc6040830184614bd6565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615034826151a0565b915061503f836151a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561507457615073615257565b5b828201905092915050565b600061508a826151a0565b9150615095836151a0565b9250826150a5576150a4615286565b5b828204905092915050565b60006150bb826151a0565b91506150c6836151a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ff576150fe615257565b5b828202905092915050565b6000615115826151a0565b9150615120836151a0565b92508282101561513357615132615257565b5b828203905092915050565b600061514982615180565b9050919050565b600061515b82615180565b9050919050565b60008115159050919050565b60006151798261513e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006151b5826151ce565b9050919050565b60006151c7826151a0565b9050919050565b60006151d9826151e0565b9050919050565b60006151eb82615180565b9050919050565b60005b838110156152105780820151818401526020810190506151f5565b8381111561521f576000848401525b50505050565b6000600282049050600182168061523d57607f821691505b60208210811415615251576152506152b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6156f28161513e565b81146156fd57600080fd5b50565b61570981615150565b811461571457600080fd5b50565b61572081615162565b811461572b57600080fd5b50565b6157378161516e565b811461574257600080fd5b50565b61574e816151a0565b811461575957600080fd5b5056fea2646970667358221220aa9e5689303896a9c343276ace16491c57cef13dae79fc6b2924b01b1372eacf64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106103d25760003560e01c80638ace0a9e116101fd578063b4d95a9311610118578063d15bcf0f116100ab578063e1370dd31161007a578063e1370dd314610e1e578063edcf19b214610e49578063f2fde38b14610e72578063f7da678514610e9b578063f953cf3a14610ec4576103d9565b8063d15bcf0f14610d62578063d7d7442f14610d8d578063dd62ed3e14610db6578063ddcf9b9814610df3576103d9565b8063bf9eb540116100e7578063bf9eb54014610caa578063cb66453414610cd3578063cba0e99614610cfc578063d1294d4c14610d39576103d9565b8063b4d95a9314610bee578063b62496f514610c17578063b934f33b14610c54578063bf9b015914610c7f576103d9565b80639b136da411610190578063a7a074521161015f578063a7a0745214610b46578063a8c40a4214610b6f578063a9059cbb14610b9a578063b195b83914610bd7576103d9565b80639b136da414610a9c578063a04bdc8114610ac7578063a5ece94114610af2578063a6c38f5914610b1d576103d9565b806395d89b41116101cc57806395d89b41146109f657806397385fa914610a215780639878665f14610a4a5780639a7a23d614610a73576103d9565b80638ace0a9e1461094e5780638cd0260c146109775780638da5cb5b146109a057806390f50283146109cb576103d9565b80634a74bb02116102ed57806370a08231116102805780637ffb40331161024f5780637ffb4033146108a6578063801527ce146108d15780638628c23f146108fa578063893d20e814610923576103d9565b806370a08231146107fe578063715018a61461083b578063728987a4146108525780637a94d54b1461087d576103d9565b806364c16163116102bc57806364c16163146107545780636573c4df1461077f5780636ce5a8a5146107a85780636df3333a146107d3576103d9565b80634a74bb02146106aa5780634bd7ace5146106d55780635297defd146107005780635be76f111461072b576103d9565b806322788f8611610365578063313ce56711610334578063313ce56714610600578063487a69051461062b57806349bd5a5e146106565780634a0e963c14610681576103d9565b806322788f861461054457806323b872dd1461056f57806327c8f835146105ac5780632d03420b146105d7576103d9565b806313b4a7f4116103a157806313b4a7f41461049a57806314c0eaf9146104c357806318160ddd146104ee578063220f669614610519576103d9565b806306fdde03146103de5780630882a8631461040957806308de6adf14610432578063095ea7b31461045d576103d9565b366103d957005b600080fd5b3480156103ea57600080fd5b506103f3610edb565b6040516104009190614d0c565b60405180910390f35b34801561041557600080fd5b50610430600480360381019061042b9190614886565b610f6d565b005b34801561043e57600080fd5b50610447610ff3565b6040516104549190614ece565b60405180910390f35b34801561046957600080fd5b50610484600480360381019061047f9190614799565b610ffd565b6040516104919190614ca5565b60405180910390f35b3480156104a657600080fd5b506104c160048036038101906104bc91906146c6565b61101b565b005b3480156104cf57600080fd5b506104d86111fb565b6040516104e59190614ece565b60405180910390f35b3480156104fa57600080fd5b50610503611205565b6040516105109190614ece565b60405180910390f35b34801561052557600080fd5b5061052e61120f565b60405161053b9190614ca5565b60405180910390f35b34801561055057600080fd5b50610559611222565b6040516105669190614ece565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614706565b61122c565b6040516105a39190614ca5565b60405180910390f35b3480156105b857600080fd5b506105c16113aa565b6040516105ce9190614be5565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f991906147d9565b6113ce565b005b34801561060c57600080fd5b50610615611467565b6040516106229190614ece565b60405180910390f35b34801561063757600080fd5b50610640611481565b60405161064d9190614ece565b60405180910390f35b34801561066257600080fd5b5061066b61148b565b6040516106789190614be5565b60405180910390f35b34801561068d57600080fd5b506106a860048036038101906106a391906145ff565b6114b1565b005b3480156106b657600080fd5b506106bf611588565b6040516106cc9190614ca5565b60405180910390f35b3480156106e157600080fd5b506106ea61159b565b6040516106f79190614ece565b60405180910390f35b34801561070c57600080fd5b506107156115a5565b6040516107229190614ece565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d9190614659565b6115af565b005b34801561076057600080fd5b5061076961167b565b6040516107769190614ece565b60405180910390f35b34801561078b57600080fd5b506107a660048036038101906107a19190614886565b611685565b005b3480156107b457600080fd5b506107bd61172d565b6040516107ca9190614ece565b60405180910390f35b3480156107df57600080fd5b506107e8611737565b6040516107f59190614ece565b60405180910390f35b34801561080a57600080fd5b50610825600480360381019061082091906145ff565b611741565b6040516108329190614ece565b60405180910390f35b34801561084757600080fd5b5061085061178a565b005b34801561085e57600080fd5b50610867611812565b6040516108749190614ece565b60405180910390f35b34801561088957600080fd5b506108a4600480360381019061089f9190614886565b61181c565b005b3480156108b257600080fd5b506108bb6118a2565b6040516108c89190614ece565b60405180910390f35b3480156108dd57600080fd5b506108f860048036038101906108f391906147d9565b6118ac565b005b34801561090657600080fd5b50610921600480360381019061091c9190614886565b611945565b005b34801561092f57600080fd5b506109386119cb565b6040516109459190614be5565b60405180910390f35b34801561095a57600080fd5b5061097560048036038101906109709190614886565b6119da565b005b34801561098357600080fd5b5061099e60048036038101906109999190614886565b611a60565b005b3480156109ac57600080fd5b506109b5611ae6565b6040516109c29190614be5565b60405180910390f35b3480156109d757600080fd5b506109e0611b0f565b6040516109ed9190614ece565b60405180910390f35b348015610a0257600080fd5b50610a0b611b19565b604051610a189190614d0c565b60405180910390f35b348015610a2d57600080fd5b50610a486004803603810190610a439190614886565b611bab565b005b348015610a5657600080fd5b50610a716004803603810190610a6c9190614886565b611c31565b005b348015610a7f57600080fd5b50610a9a6004803603810190610a959190614759565b611cb7565b005b348015610aa857600080fd5b50610ab1611dd2565b604051610abe9190614ece565b60405180910390f35b348015610ad357600080fd5b50610adc611ddc565b604051610ae99190614ece565b60405180910390f35b348015610afe57600080fd5b50610b07611de2565b604051610b149190614c00565b60405180910390f35b348015610b2957600080fd5b50610b446004803603810190610b3f9190614686565b611e08565b005b348015610b5257600080fd5b50610b6d6004803603810190610b689190614886565b611edf565b005b348015610b7b57600080fd5b50610b84611f87565b604051610b919190614be5565b60405180910390f35b348015610ba657600080fd5b50610bc16004803603810190610bbc9190614799565b611fad565b604051610bce9190614ca5565b60405180910390f35b348015610be357600080fd5b50610bec611fcb565b005b348015610bfa57600080fd5b50610c156004803603810190610c1091906145ff565b612093565b005b348015610c2357600080fd5b50610c3e6004803603810190610c3991906145ff565b61216a565b604051610c4b9190614ca5565b60405180910390f35b348015610c6057600080fd5b50610c6961218a565b604051610c769190614be5565b60405180910390f35b348015610c8b57600080fd5b50610c946121b0565b604051610ca19190614ece565b60405180910390f35b348015610cb657600080fd5b50610cd16004803603810190610ccc91906145ff565b6121ba565b005b348015610cdf57600080fd5b50610cfa6004803603810190610cf591906145ff565b61227a565b005b348015610d0857600080fd5b50610d236004803603810190610d1e91906145ff565b612351565b604051610d309190614ca5565b60405180910390f35b348015610d4557600080fd5b50610d606004803603810190610d5b9190614886565b6123a7565b005b348015610d6e57600080fd5b50610d77612450565b604051610d849190614ca5565b60405180910390f35b348015610d9957600080fd5b50610db46004803603810190610daf9190614886565b612467565b005b348015610dc257600080fd5b50610ddd6004803603810190610dd891906146c6565b6124ed565b604051610dea9190614ece565b60405180910390f35b348015610dff57600080fd5b50610e08612574565b604051610e159190614ece565b60405180910390f35b348015610e2a57600080fd5b50610e3361257e565b604051610e409190614ece565b60405180910390f35b348015610e5557600080fd5b50610e706004803603810190610e6b9190614886565b612588565b005b348015610e7e57600080fd5b50610e996004803603810190610e9491906145ff565b61260e565b005b348015610ea757600080fd5b50610ec26004803603810190610ebd9190614833565b612706565b005b348015610ed057600080fd5b50610ed9612815565b005b606060018054610eea90615225565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1690615225565b8015610f635780601f10610f3857610100808354040283529160200191610f63565b820191906000526020600020905b815481529060010190602001808311610f4657829003601f168201915b5050505050905090565b610f756128dd565b73ffffffffffffffffffffffffffffffffffffffff16610f93611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090614e4e565b60405180910390fd5b8060198190555050565b6000602854905090565b600061101161100a6128dd565b84846128e5565b6001905092915050565b6110236128dd565b73ffffffffffffffffffffffffffffffffffffffff16611041611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90614e4e565b60405180910390fd5b6001601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000602c54905090565b6000600954905090565b602a60009054906101000a900460ff1681565b6000600854905090565b6000600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006112776128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90614e2e565b60405180910390fd5b6112ff848484612ab0565b61139f8461130b6128dd565b84600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113556128dd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461139a919061510a565b6128e5565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b6113d66128dd565b73ffffffffffffffffffffffffffffffffffffffff166113f4611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461144a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144190614e4e565b60405180910390fd5b80602160006101000a81548160ff02191690831515021790555050565b6000600360009054906101000a900460ff1660ff16905090565b6000600a54905090565b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114b96128dd565b73ffffffffffffffffffffffffffffffffffffffff166114d7611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490614e4e565b60405180910390fd5b6001600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b602a60019054906101000a900460ff1681565b6000601954905090565b6000602454905090565b6115b76128dd565b73ffffffffffffffffffffffffffffffffffffffff166115d5611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461162b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162290614e4e565b60405180910390fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611676573d6000803e3d6000fd5b505050565b6000602e54905090565b61168d6128dd565b73ffffffffffffffffffffffffffffffffffffffff166116ab611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890614e4e565b60405180910390fd5b80600581905550606460055460095461171a91906150b0565b611724919061507f565b60138190555050565b6000601d54905090565b6000600754905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6117926128dd565b73ffffffffffffffffffffffffffffffffffffffff166117b0611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fd90614e4e565b60405180910390fd5b61181060006135dd565b565b6000602654905090565b6118246128dd565b73ffffffffffffffffffffffffffffffffffffffff16611842611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f90614e4e565b60405180910390fd5b80601d8190555050565b6000601d54905090565b6118b46128dd565b73ffffffffffffffffffffffffffffffffffffffff166118d2611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614e4e565b60405180910390fd5b80602a60016101000a81548160ff02191690831515021790555050565b61194d6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661196b611ae6565b73ffffffffffffffffffffffffffffffffffffffff16146119c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b890614e4e565b60405180910390fd5b8060248190555050565b60006119d5611ae6565b905090565b6119e26128dd565b73ffffffffffffffffffffffffffffffffffffffff16611a00611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4d90614e4e565b60405180910390fd5b8060288190555050565b611a686128dd565b73ffffffffffffffffffffffffffffffffffffffff16611a86611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad390614e4e565b60405180910390fd5b8060228190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000602254905090565b606060028054611b2890615225565b80601f0160208091040260200160405190810160405280929190818152602001828054611b5490615225565b8015611ba15780601f10611b7657610100808354040283529160200191611ba1565b820191906000526020600020905b815481529060010190602001808311611b8457829003601f168201915b5050505050905090565b611bb36128dd565b73ffffffffffffffffffffffffffffffffffffffff16611bd1611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611c27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1e90614e4e565b60405180910390fd5b80601f8190555050565b611c396128dd565b73ffffffffffffffffffffffffffffffffffffffff16611c57611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611cad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca490614e4e565b60405180910390fd5b8060268190555050565b611cbf6128dd565b73ffffffffffffffffffffffffffffffffffffffff16611cdd611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a90614e4e565b60405180910390fd5b603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614d8e565b60405180910390fd5b611dce82826136a1565b5050565b6000601b54905090565b600a5481565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611e106128dd565b73ffffffffffffffffffffffffffffffffffffffff16611e2e611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611e84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7b90614e4e565b60405180910390fd5b80601560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611ee76128dd565b73ffffffffffffffffffffffffffffffffffffffff16611f05611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614611f5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5290614e4e565b60405180910390fd5b806006819055506064600654600954611f7491906150b0565b611f7e919061507f565b60148190555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611fc1611fba6128dd565b8484612ab0565b6001905092915050565b611fd36128dd565b73ffffffffffffffffffffffffffffffffffffffff16611ff1611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203e90614e4e565b60405180910390fd5b6000601b819055506000602481905550600060198190555060006022819055506000601d8190555060006026819055506000601f81905550600060288190555061209160006118ac565b565b61209b6128dd565b73ffffffffffffffffffffffffffffffffffffffff166120b9611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461210f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210690614e4e565b60405180910390fd5b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e6020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601454905090565b6121c26128dd565b73ffffffffffffffffffffffffffffffffffffffff166121e0611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612236576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222d90614e4e565b60405180910390fd5b80601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6122826128dd565b73ffffffffffffffffffffffffffffffffffffffff166122a0611ae6565b73ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed90614e4e565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6123af6128dd565b73ffffffffffffffffffffffffffffffffffffffff166123cd611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161241a90614e4e565b60405180910390fd5b806007819055506103e860075460095461243d91906150b0565b612447919061507f565b600a8190555050565b6000602160009054906101000a900460ff16905090565b61246f6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661248d611ae6565b73ffffffffffffffffffffffffffffffffffffffff16146124e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124da90614e4e565b60405180910390fd5b8060088190555050565b6000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000602b54905090565b6000601354905090565b6125906128dd565b73ffffffffffffffffffffffffffffffffffffffff166125ae611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612604576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fb90614e4e565b60405180910390fd5b80601b8190555050565b6126166128dd565b73ffffffffffffffffffffffffffffffffffffffff16612634611ae6565b73ffffffffffffffffffffffffffffffffffffffff161461268a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268190614e4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156126fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f190614d4e565b60405180910390fd5b612703816135dd565b50565b61270e6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661272c611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277990614e4e565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016127bd929190614c1b565b602060405180830381600087803b1580156127d757600080fd5b505af11580156127eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280f9190614806565b50505050565b61281d6128dd565b73ffffffffffffffffffffffffffffffffffffffff1661283b611ae6565b73ffffffffffffffffffffffffffffffffffffffff1614612891576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161288890614e4e565b60405180910390fd5b6001601b8190555060016019819055506001601d819055506001601f8190555060016024819055506001602281905550600160268190555060016028819055506128db60016118ac565b565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c90614eae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156129c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129bc90614d6e565b60405180910390fd5b80600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612aa39190614ece565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1790614e8e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612b90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8790614d2e565b60405180910390fd5b60008111612bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bca90614dee565b60405180910390fd5b6000600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5190614dae565b60405180910390fd5b60001515602160009054906101000a900460ff1615151415612d5757601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d175750601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612d56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d4d90614e0e565b60405180910390fd5b5b60001515601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515148015612e07575060001515601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b15612e5257601454821115612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4890614dce565b60405180910390fd5b5b6000612e5d30611741565b9050600a548110158015612e7e5750602a60009054906101000a900460ff16155b8015612ed85750603060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ef05750602a60019054906101000a900460ff165b15612f0e57600a548110612f0d57600a549050612f0c81613742565b5b5b600060019050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612fb55750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612fc7576000600481905550600090505b60008060008084156133625760011515601560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151480613082575060011515601560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515145b156130c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130b990614e6e565b60405180910390fd5b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131695750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b1561321357600060048190555060646024548961318691906150b0565b613190919061507f565b93506064602254896131a291906150b0565b6131ac919061507f565b90506064602654896131be91906150b0565b6131c8919061507f565b92506064602854896131da91906150b0565b6131e4919061507f565b9150818382866131f49190615029565b6131fe9190615029565b6132089190615029565b600481905550613361565b600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156132ba5750602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1614155b156133605760006004819055506064601b54896132d791906150b0565b6132e1919061507f565b93506064601954896132f391906150b0565b6132fd919061507f565b90506064601d548961330f91906150b0565b613319919061507f565b92506064601f548961332b91906150b0565b613335919061507f565b9150818382866133459190615029565b61334f9190615029565b6133599190615029565b6004819055505b5b5b878761336e919061510a565b600b60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550808284868b6133c0919061510a565b6133ca919061510a565b6133d4919061510a565b6133de919061510a565b600b60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461342c9190615029565b925050819055506000811461355f57600454600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461348c9190615029565b9250508190555080602e60008282546134a59190615029565b9250508190555082602c60008282546134be9190615029565b9250508190555081602d60008282546134d79190615029565b9250508190555083602b60008282546134f09190615029565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516135569190614ece565b60405180910390a35b8873ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004548b6135bc919061510a565b6040516135c99190614ece565b60405180910390a350505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6001602a60006101000a81548160ff021916908315150217905550613768602e54613830565b613773602b546138bb565b61377e602c54613b2f565b613789602d54613d81565b60004790506137ba81601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613fd3565b7f4596ef7337c1c88bb740707471cfc0ec6d0212036b05ab1bdbb09cf3e3f01904826040516137e99190614ece565b60405180910390a16000602b819055506000602c819055506000602d819055506000602e81905550506000602a60006101000a81548160ff02191690831515021790555050565b600060028261383f919061507f565b90506000818361384f919061510a565b9050600047905061385f836141f8565b6000814761386d919061510a565b9050613879838261444a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516138ac93929190614f9d565b60405180910390a15050505050565b6000600267ffffffffffffffff8111156138d8576138d7615313565b5b6040519080825280602002602001820160405280156139065781602001602082028036833780820191505090505b509050308160008151811061391e5761391d6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156139c057600080fd5b505afa1580156139d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139f8919061462c565b81600181518110613a0c57613a0b6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613a7330602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401613af9959493929190614ee9565b600060405180830381600087803b158015613b1357600080fd5b505af1158015613b27573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613b4c57613b4b615313565b5b604051908082528060200260200182016040528015613b7a5781602001602082028036833780820191505090505b5090503081600081518110613b9257613b916152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613c3457600080fd5b505afa158015613c48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6c919061462c565b81600181518110613c8057613c7f6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613ce730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613d4b959493929190614f43565b600060405180830381600087803b158015613d6557600080fd5b505af1158015613d79573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613d9e57613d9d615313565b5b604051908082528060200260200182016040528015613dcc5781602001602082028036833780820191505090505b5090503081600081518110613de457613de36152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613e8657600080fd5b505afa158015613e9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ebe919061462c565b81600181518110613ed257613ed16152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613f3930602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613f9d959493929190614f43565b600060405180830381600087803b158015613fb757600080fd5b505af1158015613fcb573d6000803e3d6000fd5b505050505050565b6000600267ffffffffffffffff811115613ff057613fef615313565b5b60405190808252806020026020018201604052801561401e5781602001602082028036833780820191505090505b509050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561408957600080fd5b505afa15801561409d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140c1919061462c565b816000815181106140d5576140d46152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181600181518110614124576141236152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de958460008430426040518663ffffffff1660e01b81526004016141c19493929190614cc0565b6000604051808303818588803b1580156141da57600080fd5b505af11580156141ee573d6000803e3d6000fd5b5050505050505050565b6000600267ffffffffffffffff81111561421557614214615313565b5b6040519080825280602002602001820160405280156142435781602001602082028036833780820191505090505b509050308160008151811061425b5761425a6152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156142fd57600080fd5b505afa158015614311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614335919061462c565b81600181518110614349576143486152e4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506143b030602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401614414959493929190614f43565b600060405180830381600087803b15801561442e57600080fd5b505af1158015614442573d6000803e3d6000fd5b505050505050565b61447730602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846128e5565b602f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b81526004016144fe96959493929190614c44565b6060604051808303818588803b15801561451757600080fd5b505af115801561452b573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061455091906148b3565b5050505050565b600081359050614566816156e9565b92915050565b60008151905061457b816156e9565b92915050565b60008135905061459081615700565b92915050565b6000813590506145a581615717565b92915050565b6000815190506145ba81615717565b92915050565b6000813590506145cf8161572e565b92915050565b6000813590506145e481615745565b92915050565b6000815190506145f981615745565b92915050565b60006020828403121561461557614614615342565b5b600061462384828501614557565b91505092915050565b60006020828403121561464257614641615342565b5b60006146508482850161456c565b91505092915050565b60006020828403121561466f5761466e615342565b5b600061467d84828501614581565b91505092915050565b6000806040838503121561469d5761469c615342565b5b60006146ab85828601614581565b92505060206146bc85828601614596565b9150509250929050565b600080604083850312156146dd576146dc615342565b5b60006146eb85828601614557565b92505060206146fc85828601614557565b9150509250929050565b60008060006060848603121561471f5761471e615342565b5b600061472d86828701614557565b935050602061473e86828701614557565b925050604061474f868287016145d5565b9150509250925092565b600080604083850312156147705761476f615342565b5b600061477e85828601614557565b925050602061478f85828601614596565b9150509250929050565b600080604083850312156147b0576147af615342565b5b60006147be85828601614557565b92505060206147cf858286016145d5565b9150509250929050565b6000602082840312156147ef576147ee615342565b5b60006147fd84828501614596565b91505092915050565b60006020828403121561481c5761481b615342565b5b600061482a848285016145ab565b91505092915050565b60008060006060848603121561484c5761484b615342565b5b600061485a868287016145c0565b935050602061486b86828701614581565b925050604061487c868287016145d5565b9150509250925092565b60006020828403121561489c5761489b615342565b5b60006148aa848285016145d5565b91505092915050565b6000806000606084860312156148cc576148cb615342565b5b60006148da868287016145ea565b93505060206148eb868287016145ea565b92505060406148fc868287016145ea565b9150509250925092565b6000614912838361493c565b60208301905092915050565b614927816151aa565b82525050565b61493681615150565b82525050565b6149458161513e565b82525050565b6149548161513e565b82525050565b600061496582614fe4565b61496f8185615007565b935061497a83614fd4565b8060005b838110156149ab5781516149928882614906565b975061499d83614ffa565b92505060018101905061497e565b5085935050505092915050565b6149c181615162565b82525050565b6149d0816151bc565b82525050565b60006149e182614fef565b6149eb8185615018565b93506149fb8185602086016151f2565b614a0481615347565b840191505092915050565b6000614a1c602383615018565b9150614a2782615358565b604082019050919050565b6000614a3f602683615018565b9150614a4a826153a7565b604082019050919050565b6000614a62602283615018565b9150614a6d826153f6565b604082019050919050565b6000614a85603983615018565b9150614a9082615445565b604082019050919050565b6000614aa8602683615018565b9150614ab382615494565b604082019050919050565b6000614acb602883615018565b9150614ad6826154e3565b604082019050919050565b6000614aee603283615018565b9150614af982615532565b604082019050919050565b6000614b11601d83615018565b9150614b1c82615581565b602082019050919050565b6000614b34602883615018565b9150614b3f826155aa565b604082019050919050565b6000614b57602083615018565b9150614b62826155f9565b602082019050919050565b6000614b7a601883615018565b9150614b8582615622565b602082019050919050565b6000614b9d602583615018565b9150614ba88261564b565b604082019050919050565b6000614bc0602483615018565b9150614bcb8261569a565b604082019050919050565b614bdf816151a0565b82525050565b6000602082019050614bfa600083018461494b565b92915050565b6000602082019050614c15600083018461492d565b92915050565b6000604082019050614c30600083018561491e565b614c3d6020830184614bd6565b9392505050565b600060c082019050614c59600083018961494b565b614c666020830188614bd6565b614c7360408301876149c7565b614c8060608301866149c7565b614c8d608083018561494b565b614c9a60a0830184614bd6565b979650505050505050565b6000602082019050614cba60008301846149b8565b92915050565b6000608082019050614cd560008301876149c7565b8181036020830152614ce7818661495a565b9050614cf6604083018561494b565b614d036060830184614bd6565b95945050505050565b60006020820190508181036000830152614d2681846149d6565b905092915050565b60006020820190508181036000830152614d4781614a0f565b9050919050565b60006020820190508181036000830152614d6781614a32565b9050919050565b60006020820190508181036000830152614d8781614a55565b9050919050565b60006020820190508181036000830152614da781614a78565b9050919050565b60006020820190508181036000830152614dc781614a9b565b9050919050565b60006020820190508181036000830152614de781614abe565b9050919050565b60006020820190508181036000830152614e0781614ae1565b9050919050565b60006020820190508181036000830152614e2781614b04565b9050919050565b60006020820190508181036000830152614e4781614b27565b9050919050565b60006020820190508181036000830152614e6781614b4a565b9050919050565b60006020820190508181036000830152614e8781614b6d565b9050919050565b60006020820190508181036000830152614ea781614b90565b9050919050565b60006020820190508181036000830152614ec781614bb3565b9050919050565b6000602082019050614ee36000830184614bd6565b92915050565b600060a082019050614efe6000830188614bd6565b614f0b60208301876149c7565b8181036040830152614f1d818661495a565b9050614f2c606083018561491e565b614f396080830184614bd6565b9695505050505050565b600060a082019050614f586000830188614bd6565b614f6560208301876149c7565b8181036040830152614f77818661495a565b9050614f86606083018561494b565b614f936080830184614bd6565b9695505050505050565b6000606082019050614fb26000830186614bd6565b614fbf6020830185614bd6565b614fcc6040830184614bd6565b949350505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000615034826151a0565b915061503f836151a0565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561507457615073615257565b5b828201905092915050565b600061508a826151a0565b9150615095836151a0565b9250826150a5576150a4615286565b5b828204905092915050565b60006150bb826151a0565b91506150c6836151a0565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150ff576150fe615257565b5b828202905092915050565b6000615115826151a0565b9150615120836151a0565b92508282101561513357615132615257565b5b828203905092915050565b600061514982615180565b9050919050565b600061515b82615180565b9050919050565b60008115159050919050565b60006151798261513e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006151b5826151ce565b9050919050565b60006151c7826151a0565b9050919050565b60006151d9826151e0565b9050919050565b60006151eb82615180565b9050919050565b60005b838110156152105780820151818401526020810190506151f5565b8381111561521f576000848401525b50505050565b6000600282049050600182168061523d57607f821691505b60208210811415615251576152506152b5565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e73666572656420616d6f756e74206d75737420626560008201527f2067726561746572207468616e207a65726f0000000000000000000000000000602082015250565b7f43616e742074726164652c2074726164652069732064697361626c6564000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f4e6f20626f747320616c6c6f77656420746f2074726164650000000000000000600082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6156f28161513e565b81146156fd57600080fd5b50565b61570981615150565b811461571457600080fd5b50565b61572081615162565b811461572b57600080fd5b50565b6157378161516e565b811461574257600080fd5b50565b61574e816151a0565b811461575957600080fd5b5056fea2646970667358221220aa9e5689303896a9c343276ace16491c57cef13dae79fc6b2924b01b1372eacf64736f6c63430008070033
Deployed Bytecode Sourcemap
6661:19585:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11880:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24611:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13667:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11614:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22768:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10805:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11024:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8804:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13768:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12420:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8886:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20966:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11790:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26138:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9465:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22522:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8839:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12952:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13462:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20780:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10916:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12231:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13255:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26035:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11141:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6026:94;;;;;;;;;;;;;:::i;:::-;;13566:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24845:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13156:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23763:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25196:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10607:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25437:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25077:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5375:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13358:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11962:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24959:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25320:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24167:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13054:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7202:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7553:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12816:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12060:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7726:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11270:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23078:279;;;;;;;;;;;;;:::i;:::-;;22644:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7467:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7653:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25657:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23914:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18007:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13875:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25752:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25932:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23643:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11457:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10699:99;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25554:97;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24728:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6275:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20529:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23363:272;;;;;;;;;;;;;:::i;:::-;;11880:76;11919:13;11946:5;11939:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11880:76;:::o;24611:111::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24705:9:::1;24693;:21;;;;24611:111:::0;:::o;13667:95::-;13717:7;13747;;13740:14;;13667:95;:::o;11614:168::-;11691:4;11711:37;11720:12;:10;:12::i;:::-;11733:7;11741:6;11711:8;:37::i;:::-;11770:4;11763:11;;11614:168;;;;:::o;22768:302::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22911:4:::1;22874:17;:34;22900:6;22874:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;22955:4;22926:17;:26;22944:7;22926:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;23006:4;22970:16;:33;22995:6;22970:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;23049:4;23021:16;:25;23038:7;23021:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22768:302:::0;;:::o;10805:104::-;10855:7;10885:9;;10878:16;;10805:104;:::o;11024:106::-;11079:7;11109:12;;11102:19;;11024:106;:::o;8804:28::-;;;;;;;;;;;;;:::o;13768:101::-;13819:7;13845:16;;13838:23;;13768:101;:::o;12420:388::-;12552:4;12586:11;:19;12598:6;12586:19;;;;;;;;;;;;;;;:33;12606:12;:10;:12::i;:::-;12586:33;;;;;;;;;;;;;;;;12576:6;:43;;12568:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;12669:36;12679:6;12687:9;12698:6;12669:9;:36::i;:::-;12710:74;12719:6;12727:12;:10;:12::i;:::-;12777:6;12741:11;:19;12753:6;12741:19;;;;;;;;;;;;;;;:33;12761:12;:10;:12::i;:::-;12741:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;12710:8;:74::i;:::-;12796:4;12789:11;;12420:388;;;;;:::o;8886:81::-;;;:::o;20966:90::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21042:6:::1;21027:12;;:21;;;;;;;;;;;;;;;;;;20966:90:::0;:::o;11790:84::-;11831:7;11857:9;;;;;;;;;;;11850:16;;;;11790:84;:::o;26138:105::-;26189:7;26215:20;;26208:27;;26138:105;:::o;9465:28::-;;;;;;;;;;;;;:::o;22522:114::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22624:4:::1;22593:17;:28;22611:9;22593:28;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22522:114:::0;:::o;8839:40::-;;;;;;;;;;;;;:::o;12952:96::-;13001:7;13031:9;;13024:16;;12952:96;:::o;13462:98::-;13512:7;13542:10;;13535:17;;13462:98;:::o;20780:178::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20856:18:::1;20877:21;20856:42;;20917:11;20909:29;;:41;20939:10;20909:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;20845:113;20780:178:::0;:::o;10916:99::-;10967:7;10997:9;;10990:16;;10916:99;:::o;12231:175::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12327:6:::1;12307:17;:26;;;;12393:3;12375:17;;12362:12;;:30;;;;:::i;:::-;:34;;;;:::i;:::-;12344:15;:52;;;;12231:175:::0;:::o;13255:93::-;13304:7;13334:6;;13327:13;;13255:93;:::o;26035:97::-;26086:7;26112:12;;26105:19;;26035:97;:::o;11141:118::-;11207:7;11233:9;:18;11243:7;11233:18;;;;;;;;;;;;;;;;11226:25;;11141:118;;;:::o;6026:94::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6091:21:::1;6109:1;6091:9;:21::i;:::-;6026:94::o:0;13566:95::-;13616:7;13646;;13639:14;;13566:95;:::o;24845:108::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24936:9:::1;24928:6;:17;;;;24845:108:::0;:::o;13156:93::-;13205:7;13235:6;;13228:13;;13156:93;:::o;23763:113::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23860:8:::1;23836:21;;:32;;;;;;;;;;;;;;;;;;23763:113:::0;:::o;25196:112::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25291:9:::1;25279:10;:21;;;;25196:112:::0;:::o;10607:86::-;10648:7;10678;:5;:7::i;:::-;10671:14;;10607:86;:::o;25437:111::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25531:9:::1;25522:7;:18;;;;25437:111:::0;:::o;25077:113::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25173:9:::1;25161:10;:21;;;;25077:113:::0;:::o;5375:87::-;5421:7;5448:6;;;;;;;;;;;5441:13;;5375:87;:::o;13358:98::-;13408:7;13438:10;;13431:17;;13358:98;:::o;11962:88::-;12003:13;12035:7;12028:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11962:88;:::o;24959:108::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25050:9:::1;25042:6;:17;;;;24959:108:::0;:::o;25320:111::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25414:9:::1;25405:7;:18;;;;25320:111:::0;:::o;24167:242::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24274:13:::1;;;;;;;;;;;24266:21;;:4;:21;;;;24258:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;24360:41;24389:4;24395:5;24360:28;:41::i;:::-;24167:242:::0;;:::o;13054:96::-;13103:7;13133:9;;13126:16;;13054:96;:::o;7202:71::-;;;;:::o;7553:93::-;;;;;;;;;;;;;:::o;12816:130::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12933:5:::1;12907:10;:23;12918:11;12907:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12816:130:::0;;:::o;12060:164::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12148:6:::1;12132:13;:22;;;;12206:3;12192:13;;12179:12;;:26;;;;:::i;:::-;:30;;;;:::i;:::-;12165:11;:44;;;;12060:164:::0;:::o;7726:66::-;;;;;;;;;;;;;:::o;11270:176::-;11350:4;11370:40;11380:12;:10;:12::i;:::-;11393:9;11403:6;11370:9;:40::i;:::-;11432:4;11425:11;;11270:176;;;;:::o;23078:279::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23156:1:::1;23144:9;:13;;;;23180:1;23168:10;:13;;;;23203:1;23192:9;:12;;;;23227:1;23215:10;:13;;;;23247:1;23239:6;:9;;;;23269:1;23259:7;:11;;;;23289:1;23281:6;:9;;;;23311:1;23301:7;:11;;;;23323:24;23341:5;23323:17;:24::i;:::-;23078:279::o:0;22644:116::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22747:5:::1;22717:17;:27;22735:8;22717:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22644:116:::0;:::o;7467:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;7653:66::-;;;;;;;;;;;;;:::o;25657:89::-;25701:7;25727:11;;25720:18;;25657:89;:::o;23914:118::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24013:10:::1;23986:16;;:38;;;;;;;;;;;;;;;;;;23914:118:::0;:::o;18007:123::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18111:4:::1;18079:17;:29;18097:10;18079:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18007:123:::0;:::o;13875:118::-;13932:4;13959:17;:26;13977:7;13959:26;;;;;;;;;;;;;;;;;;;;;;;;;13952:33;;13875:118;;;:::o;25752:174::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25838:6:::1;25823:12;:21;;;;25904:4;25891:12;;25878;;:25;;;;:::i;:::-;:30;;;;:::i;:::-;25855:20;:53;;;;25752:174:::0;:::o;25932:97::-;25983:4;26006:12;;;;;;;;;;;25999:19;;25932:97;:::o;23643:112::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23733:12:::1;23714:16;:31;;;;23643:112:::0;:::o;11457:148::-;11540:7;11570:11;:18;11582:5;11570:18;;;;;;;;;;;;;;;:27;11589:7;11570:27;;;;;;;;;;;;;;;;11563:34;;11457:148;;;;:::o;10699:99::-;10750:7;10780:9;;10773:16;;10699:99;:::o;25554:97::-;25602:7;25628:15;;25621:22;;25554:97;:::o;24728:111::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;24822:9:::1;24811;:20;;;;24728:111:::0;:::o;6275:192::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6384:1:::1;6364:22;;:8;:22;;;;6356:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6440:19;6450:8;6440:9;:19::i;:::-;6275:192:::0;:::o;20529:243::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20722:12:::1;:21;;;20744:11;20757:6;20722:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20529:243:::0;;;:::o;23363:272::-;5606:12;:10;:12::i;:::-;5595:23;;:7;:5;:7::i;:::-;:23;;;5587:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;23430:1:::1;23418:9;:13;;;;23454:1;23442:9;:13;;;;23475:1;23466:6;:10;;;;23496:1;23487:6;:10;;;;23523:1;23510:10;:14;;;;23548:1;23535:10;:14;;;;23570:1;23560:7;:11;;;;23592:1;23582:7;:11;;;;23604:23;23622:4;23604:17;:23::i;:::-;23363:272::o:0;1335:98::-;1388:7;1415:10;1408:17;;1335:98;:::o;22154:322::-;22263:1;22246:19;;:5;:19;;;;22238:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22338:1;22319:21;;:7;:21;;;;22311:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22416:6;22386:11;:18;22398:5;22386:18;;;;;;;;;;;;;;;:27;22405:7;22386:27;;;;;;;;;;;;;;;:36;;;;22448:7;22432:32;;22441:5;22432:32;;;22457:6;22432:32;;;;;;:::i;:::-;;;;;;;;22154:322;;;:::o;14001:3511::-;14115:1;14099:18;;:4;:18;;;;14091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14186:1;14172:16;;:2;:16;;;;14164:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14256:1;14247:6;:10;14239:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14322:21;14346:9;:15;14356:4;14346:15;;;;;;;;;;;;;;;;14322:39;;14397:6;14380:13;:23;;14372:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14476:5;14460:21;;:12;;;;;;;;;;;:21;;;14457:141;;;14505:17;:21;14523:2;14505:21;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;14530:17;:23;14548:4;14530:23;;;;;;;;;;;;;;;;;;;;;;;;;14505:48;14497:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14457:141;14634:5;14611:28;;:17;:21;14629:2;14611:21;;;;;;;;;;;;;;;;;;;;;;;;;:28;;;:62;;;;;14668:5;14643:30;;:17;:23;14661:4;14643:23;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;14611:62;14608:163;;;14703:11;;14693:6;:21;;14685:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14608:163;14781:25;14809:24;14827:4;14809:9;:24::i;:::-;14781:52;;14867:20;;14847:17;:40;;:66;;;;;14897:16;;;;;;;;;;;14896:17;14847:66;:96;;;;;14930:13;;;;;;;;;;;14922:21;;:4;:21;;;;14847:96;:126;;;;;14952:21;;;;;;;;;;;14847:126;14844:352;;;15017:20;;14996:17;:41;14993:188;;15082:20;;15062:40;;15125:36;15143:17;15125;:36::i;:::-;14993:188;14844:352;15212:13;15228:4;15212:20;;15278:17;:23;15296:4;15278:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;15305:17;:21;15323:2;15305:21;;;;;;;;;;;;;;;;;;;;;;;;;15278:48;15275:159;;;15363:1;15347:13;:17;;;;15394:5;15383:16;;15275:159;15448:17;15484;15557;15624;15702:8;15699:1243;;;15799:4;15779:24;;:10;:16;15790:4;15779:16;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;:46;;;;15821:4;15805:20;;:10;:14;15816:2;15805:14;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;15779:46;15776:127;;;15849:34;;;;;;;;;;:::i;:::-;;;;;;;;15776:127;15957:25;:29;15983:2;15957:29;;;;;;;;;;;;;;;;;;;;;;;;;:55;;;;;16004:7;;;;;;;;;;;15990:22;;:2;:22;;;;15957:55;15953:954;;;16057:1;16041:13;:17;;;;16117:3;16106:10;;16097:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;16085:35;;16179:3;16168:10;;16159:6;:19;;;;:::i;:::-;:23;;;;:::i;:::-;16147:35;;16238:3;16230:7;;16221:6;:16;;;;:::i;:::-;:20;;;;:::i;:::-;16209:32;;16297:3;16289:7;;16280:6;:16;;;;:::i;:::-;:20;;;;:::i;:::-;16268:32;;16379:9;16367;16355;16343;:21;;;;:::i;:::-;:33;;;;:::i;:::-;:45;;;;:::i;:::-;16327:13;:61;;;;15953:954;;;16462:25;:31;16488:4;16462:31;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;;16513:7;;;;;;;;;;;16497:24;;:4;:24;;;;16462:59;16459:448;;;16580:1;16564:13;:17;;;;16635:3;16625:9;;16616:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;16604:34;;16692:3;16682:9;;16673:6;:18;;;;:::i;:::-;:22;;;;:::i;:::-;16661:34;;16746:3;16739:6;;16730;:15;;;;:::i;:::-;:19;;;;:::i;:::-;16718:31;;16800:3;16793:6;;16784;:15;;;;:::i;:::-;:19;;;;:::i;:::-;16772:31;;16878:9;16866;16854;16842;:21;;;;:::i;:::-;:33;;;;:::i;:::-;:45;;;;:::i;:::-;16826:13;:61;;;;16459:448;15953:954;15699:1243;16992:6;16976:13;:22;;;;:::i;:::-;16958:9;:15;16968:4;16958:15;;;;;;;;;;;;;;;:40;;;;17075:9;17063;17051;17039;17030:6;:18;;;;:::i;:::-;:30;;;;:::i;:::-;:42;;;;:::i;:::-;:54;;;;:::i;:::-;17013:9;:13;17023:2;17013:13;;;;;;;;;;;;;;;;:71;;;;;;;:::i;:::-;;;;;;;;17115:1;17102:9;:14;17099:323;;17152:13;;17124:9;:24;17142:4;17124:24;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;17223:9;17210;;:22;;;;;;;:::i;:::-;;;;;;;;17260:9;17247;;:22;;;;;;;:::i;:::-;;;;;;;;17297:9;17284;;:22;;;;;;;:::i;:::-;;;;;;;;17334:9;17321;;:22;;;;;;;:::i;:::-;;;;;;;;17377:4;17354:44;;17363:4;17354:44;;;17384:13;;17354:44;;;;;;:::i;:::-;;;;;;;;17099:323;17456:2;17441:39;;17450:4;17441:39;;;17466:13;;17459:6;:20;;;;:::i;:::-;17441:39;;;;;;:::i;:::-;;;;;;;;14070:3442;;;;;;;14001:3511;;;:::o;6475:173::-;6531:16;6550:6;;;;;;;;;;;6531:25;;6576:8;6567:6;;:17;;;;;;;;;;;;;;;;;;6631:8;6600:40;;6621:8;6600:40;;;;;;;;;;;;6520:128;6475:173;:::o;24415:188::-;24532:5;24498:25;:31;24524:4;24498:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;24589:5;24555:40;;24583:4;24555:40;;;;;;;;;;;;24415:188;;:::o;17518:482::-;9572:4;9553:16;;:23;;;;;;;;;;;;;;;;;;17598:25:::1;17613:9;;17598:14;:25::i;:::-;17634:30;17654:9;;17634:19;:30::i;:::-;17675:21;17686:9;;17675:10;:21::i;:::-;17707;17718:9;;17707:10;:21::i;:::-;17739:27;17769:21;17739:51;;17801:35;17812:19;17832:3;;;;;;;;;;;17801:10;:35::i;:::-;17852:44;17882:13;17852:44;;;;;;:::i;:::-;;;;;;;;17919:1;17907:9;:13;;;;17943:1;17931:9;:13;;;;17967:1;17955:9;:13;;;;17991:1;17979:9;:13;;;;17587:413;9606:5:::0;9587:16;;:24;;;;;;;;;;;;;;;;;;17518:482;:::o;21064:388::-;21126:12;21159:1;21141:15;:19;;;;:::i;:::-;21126:34;;21165:17;21203:4;21185:15;:22;;;;:::i;:::-;21165:42;;21212:22;21237:21;21212:46;;21265:22;21282:4;21265:16;:22::i;:::-;21292:18;21338:14;21313:21;:40;;;;:::i;:::-;21292:61;;21361:35;21374:9;21385:10;21361:12;:35::i;:::-;21406:41;21421:4;21426:10;21437:9;21406:41;;;;;;;;:::i;:::-;;;;;;;;21121:331;;;;21064:388;:::o;18136:399::-;18199:21;18237:1;18223:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18199:40;;18262:4;18244;18249:1;18244:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18282:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18272:4;18277:1;18272:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;18301:49;18318:4;18333:7;;;;;;;;;;;18343:6;18301:8;:49::i;:::-;18361:7;;;;;;;;;;;:58;;;18425:6;18437:1;18473:4;18483:16;;;;;;;;;;;18505:15;18361:164;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18188:347;18136:399;:::o;18543:385::-;18597:21;18635:1;18621:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18597:40;;18660:4;18642;18647:1;18642:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;18680:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18670:4;18675:1;18670:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;18699:49;18716:4;18731:7;;;;;;;;;;;18741:6;18699:8;:49::i;:::-;18759:7;;;;;;;;;;;:58;;;18823:6;18835:1;18871:4;18889;18900:15;18759:161;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18586:342;18543:385;:::o;19531:397::-;19585:21;19623:1;19609:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19585:40;;19648:4;19630;19635:1;19630:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19668:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19658:4;19663:1;19658:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;19687:49;19704:4;19719:7;;;;;;;;;;;19729:6;19687:8;:49::i;:::-;19747:7;;;;;;;;;;;:58;;;19811:6;19823:1;19859:4;19877;19888:15;19747:161;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19574:354;19531:397;:::o;19016:507::-;19154:21;19192:1;19178:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19154:40;;19215:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19205:4;19210:1;19205:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;19250:11;19240:4;19245:1;19240:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;19300:7;;;;;;;;;;;:58;;;19366:9;19391:1;19440:4;19467;19487:15;19300:213;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19085:438;19016:507;;:::o;21460:397::-;21519:21;21557:1;21543:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21519:40;;21582:4;21564;21569:1;21564:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;21602:7;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21592:4;21597:1;21592:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;;;;;;;;21621:54;21638:4;21653:7;;;;;;;;;;;21663:11;21621:8;:54::i;:::-;21686:7;;;;;;;;;;;:58;;;21750:11;21767:1;21803:4;21821;21832:15;21686:166;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21514:343;21460:397;:::o;21869:277::-;21942:54;21959:4;21974:7;;;;;;;;;;;21984:11;21942:8;:54::i;:::-;22003:7;;;;;;;;;;;:23;;;22033:9;22057:4;22068:11;22085:1;22092;22099:11;22121:15;22003:138;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;21869:277;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;301:155;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;462:133;;;;:::o;601:137::-;655:5;686:6;680:13;671:22;;702:30;726:5;702:30;:::i;:::-;601:137;;;;:::o;744:165::-;803:5;841:6;828:20;819:29;;857:46;897:5;857:46;:::i;:::-;744:165;;;;:::o;915:139::-;961:5;999:6;986:20;977:29;;1015:33;1042:5;1015:33;:::i;:::-;915:139;;;;:::o;1060:143::-;1117:5;1148:6;1142:13;1133:22;;1164:33;1191:5;1164:33;:::i;:::-;1060:143;;;;:::o;1209:329::-;1268:6;1317:2;1305:9;1296:7;1292:23;1288:32;1285:119;;;1323:79;;:::i;:::-;1285:119;1443:1;1468:53;1513:7;1504:6;1493:9;1489:22;1468:53;:::i;:::-;1458:63;;1414:117;1209:329;;;;:::o;1544:351::-;1614:6;1663:2;1651:9;1642:7;1638:23;1634:32;1631:119;;;1669:79;;:::i;:::-;1631:119;1789:1;1814:64;1870:7;1861:6;1850:9;1846:22;1814:64;:::i;:::-;1804:74;;1760:128;1544:351;;;;:::o;1901:345::-;1968:6;2017:2;2005:9;1996:7;1992:23;1988:32;1985:119;;;2023:79;;:::i;:::-;1985:119;2143:1;2168:61;2221:7;2212:6;2201:9;2197:22;2168:61;:::i;:::-;2158:71;;2114:125;1901:345;;;;:::o;2252:484::-;2325:6;2333;2382:2;2370:9;2361:7;2357:23;2353:32;2350:119;;;2388:79;;:::i;:::-;2350:119;2508:1;2533:61;2586:7;2577:6;2566:9;2562:22;2533:61;:::i;:::-;2523:71;;2479:125;2643:2;2669:50;2711:7;2702:6;2691:9;2687:22;2669:50;:::i;:::-;2659:60;;2614:115;2252:484;;;;;:::o;2742:474::-;2810:6;2818;2867:2;2855:9;2846:7;2842:23;2838:32;2835:119;;;2873:79;;:::i;:::-;2835:119;2993:1;3018:53;3063:7;3054:6;3043:9;3039:22;3018:53;:::i;:::-;3008:63;;2964:117;3120:2;3146:53;3191:7;3182:6;3171:9;3167:22;3146:53;:::i;:::-;3136:63;;3091:118;2742:474;;;;;:::o;3222:619::-;3299:6;3307;3315;3364:2;3352:9;3343:7;3339:23;3335:32;3332:119;;;3370:79;;:::i;:::-;3332:119;3490:1;3515:53;3560:7;3551:6;3540:9;3536:22;3515:53;:::i;:::-;3505:63;;3461:117;3617:2;3643:53;3688:7;3679:6;3668:9;3664:22;3643:53;:::i;:::-;3633:63;;3588:118;3745:2;3771:53;3816:7;3807:6;3796:9;3792:22;3771:53;:::i;:::-;3761:63;;3716:118;3222:619;;;;;:::o;3847:468::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:50;4290:7;4281:6;4270:9;4266:22;4248:50;:::i;:::-;4238:60;;4193:115;3847:468;;;;;:::o;4321:474::-;4389:6;4397;4446:2;4434:9;4425:7;4421:23;4417:32;4414:119;;;4452:79;;:::i;:::-;4414:119;4572:1;4597:53;4642:7;4633:6;4622:9;4618:22;4597:53;:::i;:::-;4587:63;;4543:117;4699:2;4725:53;4770:7;4761:6;4750:9;4746:22;4725:53;:::i;:::-;4715:63;;4670:118;4321:474;;;;;:::o;4801:323::-;4857:6;4906:2;4894:9;4885:7;4881:23;4877:32;4874:119;;;4912:79;;:::i;:::-;4874:119;5032:1;5057:50;5099:7;5090:6;5079:9;5075:22;5057:50;:::i;:::-;5047:60;;5003:114;4801:323;;;;:::o;5130:345::-;5197:6;5246:2;5234:9;5225:7;5221:23;5217:32;5214:119;;;5252:79;;:::i;:::-;5214:119;5372:1;5397:61;5450:7;5441:6;5430:9;5426:22;5397:61;:::i;:::-;5387:71;;5343:125;5130:345;;;;:::o;5481:661::-;5579:6;5587;5595;5644:2;5632:9;5623:7;5619:23;5615:32;5612:119;;;5650:79;;:::i;:::-;5612:119;5770:1;5795:66;5853:7;5844:6;5833:9;5829:22;5795:66;:::i;:::-;5785:76;;5741:130;5910:2;5936:61;5989:7;5980:6;5969:9;5965:22;5936:61;:::i;:::-;5926:71;;5881:126;6046:2;6072:53;6117:7;6108:6;6097:9;6093:22;6072:53;:::i;:::-;6062:63;;6017:118;5481:661;;;;;:::o;6148:329::-;6207:6;6256:2;6244:9;6235:7;6231:23;6227:32;6224:119;;;6262:79;;:::i;:::-;6224:119;6382:1;6407:53;6452:7;6443:6;6432:9;6428:22;6407:53;:::i;:::-;6397:63;;6353:117;6148:329;;;;:::o;6483:663::-;6571:6;6579;6587;6636:2;6624:9;6615:7;6611:23;6607:32;6604:119;;;6642:79;;:::i;:::-;6604:119;6762:1;6787:64;6843:7;6834:6;6823:9;6819:22;6787:64;:::i;:::-;6777:74;;6733:128;6900:2;6926:64;6982:7;6973:6;6962:9;6958:22;6926:64;:::i;:::-;6916:74;;6871:129;7039:2;7065:64;7121:7;7112:6;7101:9;7097:22;7065:64;:::i;:::-;7055:74;;7010:129;6483:663;;;;;:::o;7152:179::-;7221:10;7242:46;7284:3;7276:6;7242:46;:::i;:::-;7320:4;7315:3;7311:14;7297:28;;7152:179;;;;:::o;7337:147::-;7432:45;7471:5;7432:45;:::i;:::-;7427:3;7420:58;7337:147;;:::o;7490:142::-;7593:32;7619:5;7593:32;:::i;:::-;7588:3;7581:45;7490:142;;:::o;7638:108::-;7715:24;7733:5;7715:24;:::i;:::-;7710:3;7703:37;7638:108;;:::o;7752:118::-;7839:24;7857:5;7839:24;:::i;:::-;7834:3;7827:37;7752:118;;:::o;7906:732::-;8025:3;8054:54;8102:5;8054:54;:::i;:::-;8124:86;8203:6;8198:3;8124:86;:::i;:::-;8117:93;;8234:56;8284:5;8234:56;:::i;:::-;8313:7;8344:1;8329:284;8354:6;8351:1;8348:13;8329:284;;;8430:6;8424:13;8457:63;8516:3;8501:13;8457:63;:::i;:::-;8450:70;;8543:60;8596:6;8543:60;:::i;:::-;8533:70;;8389:224;8376:1;8373;8369:9;8364:14;;8329:284;;;8333:14;8629:3;8622:10;;8030:608;;;7906:732;;;;:::o;8644:109::-;8725:21;8740:5;8725:21;:::i;:::-;8720:3;8713:34;8644:109;;:::o;8759:147::-;8854:45;8893:5;8854:45;:::i;:::-;8849:3;8842:58;8759:147;;:::o;8912:364::-;9000:3;9028:39;9061:5;9028:39;:::i;:::-;9083:71;9147:6;9142:3;9083:71;:::i;:::-;9076:78;;9163:52;9208:6;9203:3;9196:4;9189:5;9185:16;9163:52;:::i;:::-;9240:29;9262:6;9240:29;:::i;:::-;9235:3;9231:39;9224:46;;9004:272;8912:364;;;;:::o;9282:366::-;9424:3;9445:67;9509:2;9504:3;9445:67;:::i;:::-;9438:74;;9521:93;9610:3;9521:93;:::i;:::-;9639:2;9634:3;9630:12;9623:19;;9282:366;;;:::o;9654:::-;9796:3;9817:67;9881:2;9876:3;9817:67;:::i;:::-;9810:74;;9893:93;9982:3;9893:93;:::i;:::-;10011:2;10006:3;10002:12;9995:19;;9654:366;;;:::o;10026:::-;10168:3;10189:67;10253:2;10248:3;10189:67;:::i;:::-;10182:74;;10265:93;10354:3;10265:93;:::i;:::-;10383:2;10378:3;10374:12;10367:19;;10026:366;;;:::o;10398:::-;10540:3;10561:67;10625:2;10620:3;10561:67;:::i;:::-;10554:74;;10637:93;10726:3;10637:93;:::i;:::-;10755:2;10750:3;10746:12;10739:19;;10398:366;;;:::o;10770:::-;10912:3;10933:67;10997:2;10992:3;10933:67;:::i;:::-;10926:74;;11009:93;11098:3;11009:93;:::i;:::-;11127:2;11122:3;11118:12;11111:19;;10770:366;;;:::o;11142:::-;11284:3;11305:67;11369:2;11364:3;11305:67;:::i;:::-;11298:74;;11381:93;11470:3;11381:93;:::i;:::-;11499:2;11494:3;11490:12;11483:19;;11142:366;;;:::o;11514:::-;11656:3;11677:67;11741:2;11736:3;11677:67;:::i;:::-;11670:74;;11753:93;11842:3;11753:93;:::i;:::-;11871:2;11866:3;11862:12;11855:19;;11514:366;;;:::o;11886:::-;12028:3;12049:67;12113:2;12108:3;12049:67;:::i;:::-;12042:74;;12125:93;12214:3;12125:93;:::i;:::-;12243:2;12238:3;12234:12;12227:19;;11886:366;;;:::o;12258:::-;12400:3;12421:67;12485:2;12480:3;12421:67;:::i;:::-;12414:74;;12497:93;12586:3;12497:93;:::i;:::-;12615:2;12610:3;12606:12;12599:19;;12258:366;;;:::o;12630:::-;12772:3;12793:67;12857:2;12852:3;12793:67;:::i;:::-;12786:74;;12869:93;12958:3;12869:93;:::i;:::-;12987:2;12982:3;12978:12;12971:19;;12630:366;;;:::o;13002:::-;13144:3;13165:67;13229:2;13224:3;13165:67;:::i;:::-;13158:74;;13241:93;13330:3;13241:93;:::i;:::-;13359:2;13354:3;13350:12;13343:19;;13002:366;;;:::o;13374:::-;13516:3;13537:67;13601:2;13596:3;13537:67;:::i;:::-;13530:74;;13613:93;13702:3;13613:93;:::i;:::-;13731:2;13726:3;13722:12;13715:19;;13374:366;;;:::o;13746:::-;13888:3;13909:67;13973:2;13968:3;13909:67;:::i;:::-;13902:74;;13985:93;14074:3;13985:93;:::i;:::-;14103:2;14098:3;14094:12;14087:19;;13746:366;;;:::o;14118:118::-;14205:24;14223:5;14205:24;:::i;:::-;14200:3;14193:37;14118:118;;:::o;14242:222::-;14335:4;14373:2;14362:9;14358:18;14350:26;;14386:71;14454:1;14443:9;14439:17;14430:6;14386:71;:::i;:::-;14242:222;;;;:::o;14470:254::-;14579:4;14617:2;14606:9;14602:18;14594:26;;14630:87;14714:1;14703:9;14699:17;14690:6;14630:87;:::i;:::-;14470:254;;;;:::o;14730:348::-;14859:4;14897:2;14886:9;14882:18;14874:26;;14910:79;14986:1;14975:9;14971:17;14962:6;14910:79;:::i;:::-;14999:72;15067:2;15056:9;15052:18;15043:6;14999:72;:::i;:::-;14730:348;;;;;:::o;15084:807::-;15333:4;15371:3;15360:9;15356:19;15348:27;;15385:71;15453:1;15442:9;15438:17;15429:6;15385:71;:::i;:::-;15466:72;15534:2;15523:9;15519:18;15510:6;15466:72;:::i;:::-;15548:80;15624:2;15613:9;15609:18;15600:6;15548:80;:::i;:::-;15638;15714:2;15703:9;15699:18;15690:6;15638:80;:::i;:::-;15728:73;15796:3;15785:9;15781:19;15772:6;15728:73;:::i;:::-;15811;15879:3;15868:9;15864:19;15855:6;15811:73;:::i;:::-;15084:807;;;;;;;;;:::o;15897:210::-;15984:4;16022:2;16011:9;16007:18;15999:26;;16035:65;16097:1;16086:9;16082:17;16073:6;16035:65;:::i;:::-;15897:210;;;;:::o;16113:720::-;16348:4;16386:3;16375:9;16371:19;16363:27;;16400:79;16476:1;16465:9;16461:17;16452:6;16400:79;:::i;:::-;16526:9;16520:4;16516:20;16511:2;16500:9;16496:18;16489:48;16554:108;16657:4;16648:6;16554:108;:::i;:::-;16546:116;;16672:72;16740:2;16729:9;16725:18;16716:6;16672:72;:::i;:::-;16754;16822:2;16811:9;16807:18;16798:6;16754:72;:::i;:::-;16113:720;;;;;;;:::o;16839:313::-;16952:4;16990:2;16979:9;16975:18;16967:26;;17039:9;17033:4;17029:20;17025:1;17014:9;17010:17;17003:47;17067:78;17140:4;17131:6;17067:78;:::i;:::-;17059:86;;16839:313;;;;:::o;17158:419::-;17324:4;17362:2;17351:9;17347:18;17339:26;;17411:9;17405:4;17401:20;17397:1;17386:9;17382:17;17375:47;17439:131;17565:4;17439:131;:::i;:::-;17431:139;;17158:419;;;:::o;17583:::-;17749:4;17787:2;17776:9;17772:18;17764:26;;17836:9;17830:4;17826:20;17822:1;17811:9;17807:17;17800:47;17864:131;17990:4;17864:131;:::i;:::-;17856:139;;17583:419;;;:::o;18008:::-;18174:4;18212:2;18201:9;18197:18;18189:26;;18261:9;18255:4;18251:20;18247:1;18236:9;18232:17;18225:47;18289:131;18415:4;18289:131;:::i;:::-;18281:139;;18008:419;;;:::o;18433:::-;18599:4;18637:2;18626:9;18622:18;18614:26;;18686:9;18680:4;18676:20;18672:1;18661:9;18657:17;18650:47;18714:131;18840:4;18714:131;:::i;:::-;18706:139;;18433:419;;;:::o;18858:::-;19024:4;19062:2;19051:9;19047:18;19039:26;;19111:9;19105:4;19101:20;19097:1;19086:9;19082:17;19075:47;19139:131;19265:4;19139:131;:::i;:::-;19131:139;;18858:419;;;:::o;19283:::-;19449:4;19487:2;19476:9;19472:18;19464:26;;19536:9;19530:4;19526:20;19522:1;19511:9;19507:17;19500:47;19564:131;19690:4;19564:131;:::i;:::-;19556:139;;19283:419;;;:::o;19708:::-;19874:4;19912:2;19901:9;19897:18;19889:26;;19961:9;19955:4;19951:20;19947:1;19936:9;19932:17;19925:47;19989:131;20115:4;19989:131;:::i;:::-;19981:139;;19708:419;;;:::o;20133:::-;20299:4;20337:2;20326:9;20322:18;20314:26;;20386:9;20380:4;20376:20;20372:1;20361:9;20357:17;20350:47;20414:131;20540:4;20414:131;:::i;:::-;20406:139;;20133:419;;;:::o;20558:::-;20724:4;20762:2;20751:9;20747:18;20739:26;;20811:9;20805:4;20801:20;20797:1;20786:9;20782:17;20775:47;20839:131;20965:4;20839:131;:::i;:::-;20831:139;;20558:419;;;:::o;20983:::-;21149:4;21187:2;21176:9;21172:18;21164:26;;21236:9;21230:4;21226:20;21222:1;21211:9;21207:17;21200:47;21264:131;21390:4;21264:131;:::i;:::-;21256:139;;20983:419;;;:::o;21408:::-;21574:4;21612:2;21601:9;21597:18;21589:26;;21661:9;21655:4;21651:20;21647:1;21636:9;21632:17;21625:47;21689:131;21815:4;21689:131;:::i;:::-;21681:139;;21408:419;;;:::o;21833:::-;21999:4;22037:2;22026:9;22022:18;22014:26;;22086:9;22080:4;22076:20;22072:1;22061:9;22057:17;22050:47;22114:131;22240:4;22114:131;:::i;:::-;22106:139;;21833:419;;;:::o;22258:::-;22424:4;22462:2;22451:9;22447:18;22439:26;;22511:9;22505:4;22501:20;22497:1;22486:9;22482:17;22475:47;22539:131;22665:4;22539:131;:::i;:::-;22531:139;;22258:419;;;:::o;22683:222::-;22776:4;22814:2;22803:9;22799:18;22791:26;;22827:71;22895:1;22884:9;22880:17;22871:6;22827:71;:::i;:::-;22683:222;;;;:::o;22911:847::-;23182:4;23220:3;23209:9;23205:19;23197:27;;23234:71;23302:1;23291:9;23287:17;23278:6;23234:71;:::i;:::-;23315:80;23391:2;23380:9;23376:18;23367:6;23315:80;:::i;:::-;23442:9;23436:4;23432:20;23427:2;23416:9;23412:18;23405:48;23470:108;23573:4;23564:6;23470:108;:::i;:::-;23462:116;;23588:80;23664:2;23653:9;23649:18;23640:6;23588:80;:::i;:::-;23678:73;23746:3;23735:9;23731:19;23722:6;23678:73;:::i;:::-;22911:847;;;;;;;;:::o;23764:831::-;24027:4;24065:3;24054:9;24050:19;24042:27;;24079:71;24147:1;24136:9;24132:17;24123:6;24079:71;:::i;:::-;24160:80;24236:2;24225:9;24221:18;24212:6;24160:80;:::i;:::-;24287:9;24281:4;24277:20;24272:2;24261:9;24257:18;24250:48;24315:108;24418:4;24409:6;24315:108;:::i;:::-;24307:116;;24433:72;24501:2;24490:9;24486:18;24477:6;24433:72;:::i;:::-;24515:73;24583:3;24572:9;24568:19;24559:6;24515:73;:::i;:::-;23764:831;;;;;;;;:::o;24601:442::-;24750:4;24788:2;24777:9;24773:18;24765:26;;24801:71;24869:1;24858:9;24854:17;24845:6;24801:71;:::i;:::-;24882:72;24950:2;24939:9;24935:18;24926:6;24882:72;:::i;:::-;24964;25032:2;25021:9;25017:18;25008:6;24964:72;:::i;:::-;24601:442;;;;;;:::o;25130:132::-;25197:4;25220:3;25212:11;;25250:4;25245:3;25241:14;25233:22;;25130:132;;;:::o;25268:114::-;25335:6;25369:5;25363:12;25353:22;;25268:114;;;:::o;25388:99::-;25440:6;25474:5;25468:12;25458:22;;25388:99;;;:::o;25493:113::-;25563:4;25595;25590:3;25586:14;25578:22;;25493:113;;;:::o;25612:184::-;25711:11;25745:6;25740:3;25733:19;25785:4;25780:3;25776:14;25761:29;;25612:184;;;;:::o;25802:169::-;25886:11;25920:6;25915:3;25908:19;25960:4;25955:3;25951:14;25936:29;;25802:169;;;;:::o;25977:305::-;26017:3;26036:20;26054:1;26036:20;:::i;:::-;26031:25;;26070:20;26088:1;26070:20;:::i;:::-;26065:25;;26224:1;26156:66;26152:74;26149:1;26146:81;26143:107;;;26230:18;;:::i;:::-;26143:107;26274:1;26271;26267:9;26260:16;;25977:305;;;;:::o;26288:185::-;26328:1;26345:20;26363:1;26345:20;:::i;:::-;26340:25;;26379:20;26397:1;26379:20;:::i;:::-;26374:25;;26418:1;26408:35;;26423:18;;:::i;:::-;26408:35;26465:1;26462;26458:9;26453:14;;26288:185;;;;:::o;26479:348::-;26519:7;26542:20;26560:1;26542:20;:::i;:::-;26537:25;;26576:20;26594:1;26576:20;:::i;:::-;26571:25;;26764:1;26696:66;26692:74;26689:1;26686:81;26681:1;26674:9;26667:17;26663:105;26660:131;;;26771:18;;:::i;:::-;26660:131;26819:1;26816;26812:9;26801:20;;26479:348;;;;:::o;26833:191::-;26873:4;26893:20;26911:1;26893:20;:::i;:::-;26888:25;;26927:20;26945:1;26927:20;:::i;:::-;26922:25;;26966:1;26963;26960:8;26957:34;;;26971:18;;:::i;:::-;26957:34;27016:1;27013;27009:9;27001:17;;26833:191;;;;:::o;27030:96::-;27067:7;27096:24;27114:5;27096:24;:::i;:::-;27085:35;;27030:96;;;:::o;27132:104::-;27177:7;27206:24;27224:5;27206:24;:::i;:::-;27195:35;;27132:104;;;:::o;27242:90::-;27276:7;27319:5;27312:13;27305:21;27294:32;;27242:90;;;:::o;27338:109::-;27388:7;27417:24;27435:5;27417:24;:::i;:::-;27406:35;;27338:109;;;:::o;27453:126::-;27490:7;27530:42;27523:5;27519:54;27508:65;;27453:126;;;:::o;27585:77::-;27622:7;27651:5;27640:16;;27585:77;;;:::o;27668:134::-;27726:9;27759:37;27790:5;27759:37;:::i;:::-;27746:50;;27668:134;;;:::o;27808:121::-;27866:9;27899:24;27917:5;27899:24;:::i;:::-;27886:37;;27808:121;;;:::o;27935:126::-;27985:9;28018:37;28049:5;28018:37;:::i;:::-;28005:50;;27935:126;;;:::o;28067:113::-;28117:9;28150:24;28168:5;28150:24;:::i;:::-;28137:37;;28067:113;;;:::o;28186:307::-;28254:1;28264:113;28278:6;28275:1;28272:13;28264:113;;;28363:1;28358:3;28354:11;28348:18;28344:1;28339:3;28335:11;28328:39;28300:2;28297:1;28293:10;28288:15;;28264:113;;;28395:6;28392:1;28389:13;28386:101;;;28475:1;28466:6;28461:3;28457:16;28450:27;28386:101;28235:258;28186:307;;;:::o;28499:320::-;28543:6;28580:1;28574:4;28570:12;28560:22;;28627:1;28621:4;28617:12;28648:18;28638:81;;28704:4;28696:6;28692:17;28682:27;;28638:81;28766:2;28758:6;28755:14;28735:18;28732:38;28729:84;;;28785:18;;:::i;:::-;28729:84;28550:269;28499:320;;;:::o;28825:180::-;28873:77;28870:1;28863:88;28970:4;28967:1;28960:15;28994:4;28991:1;28984:15;29011:180;29059:77;29056:1;29049:88;29156:4;29153:1;29146:15;29180:4;29177:1;29170:15;29197:180;29245:77;29242:1;29235:88;29342:4;29339:1;29332:15;29366:4;29363:1;29356:15;29383:180;29431:77;29428:1;29421:88;29528:4;29525:1;29518:15;29552:4;29549:1;29542:15;29569:180;29617:77;29614:1;29607:88;29714:4;29711:1;29704:15;29738:4;29735:1;29728:15;29878:117;29987:1;29984;29977:12;30001:102;30042:6;30093:2;30089:7;30084:2;30077:5;30073:14;30069:28;30059:38;;30001:102;;;:::o;30109:222::-;30249:34;30245:1;30237:6;30233:14;30226:58;30318:5;30313:2;30305:6;30301:15;30294:30;30109:222;:::o;30337:225::-;30477:34;30473:1;30465:6;30461:14;30454:58;30546:8;30541:2;30533:6;30529:15;30522:33;30337:225;:::o;30568:221::-;30708:34;30704:1;30696:6;30692:14;30685:58;30777:4;30772:2;30764:6;30760:15;30753:29;30568:221;:::o;30795:244::-;30935:34;30931:1;30923:6;30919:14;30912:58;31004:27;30999:2;30991:6;30987:15;30980:52;30795:244;:::o;31045:225::-;31185:34;31181:1;31173:6;31169:14;31162:58;31254:8;31249:2;31241:6;31237:15;31230:33;31045:225;:::o;31276:227::-;31416:34;31412:1;31404:6;31400:14;31393:58;31485:10;31480:2;31472:6;31468:15;31461:35;31276:227;:::o;31509:237::-;31649:34;31645:1;31637:6;31633:14;31626:58;31718:20;31713:2;31705:6;31701:15;31694:45;31509:237;:::o;31752:179::-;31892:31;31888:1;31880:6;31876:14;31869:55;31752:179;:::o;31937:227::-;32077:34;32073:1;32065:6;32061:14;32054:58;32146:10;32141:2;32133:6;32129:15;32122:35;31937:227;:::o;32170:182::-;32310:34;32306:1;32298:6;32294:14;32287:58;32170:182;:::o;32358:174::-;32498:26;32494:1;32486:6;32482:14;32475:50;32358:174;:::o;32538:224::-;32678:34;32674:1;32666:6;32662:14;32655:58;32747:7;32742:2;32734:6;32730:15;32723:32;32538:224;:::o;32768:223::-;32908:34;32904:1;32896:6;32892:14;32885:58;32977:6;32972:2;32964:6;32960:15;32953:31;32768:223;:::o;32997:122::-;33070:24;33088:5;33070:24;:::i;:::-;33063:5;33060:35;33050:63;;33109:1;33106;33099:12;33050:63;32997:122;:::o;33125:138::-;33206:32;33232:5;33206:32;:::i;:::-;33199:5;33196:43;33186:71;;33253:1;33250;33243:12;33186:71;33125:138;:::o;33269:116::-;33339:21;33354:5;33339:21;:::i;:::-;33332:5;33329:32;33319:60;;33375:1;33372;33365:12;33319:60;33269:116;:::o;33391:148::-;33477:37;33508:5;33477:37;:::i;:::-;33470:5;33467:48;33457:76;;33529:1;33526;33519:12;33457:76;33391:148;:::o;33545:122::-;33618:24;33636:5;33618:24;:::i;:::-;33611:5;33608:35;33598:63;;33657:1;33654;33647:12;33598:63;33545:122;:::o
Swarm Source
ipfs://aa9e5689303896a9c343276ace16491c57cef13dae79fc6b2924b01b1372eacf
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.