ETH Price: $3,388.14 (+1.60%)

Token

All Time High \_(ツ)_/ (ATH)
 

Overview

Max Total Supply

1,000,000 ATH

Holders

414

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
756.106187372939883794 ATH

Value
$0.00
0x9d53c0759D7f543f9E98e790cD786cA35a98D191
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
AllTimeHigh

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-22
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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 SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}  

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

interface IUniswapV2Pair {
	function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
}

contract AllTimeHigh is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => uint256) private sellcooldown;
    mapping (address => uint256) private buycooldown;
    mapping (address => bool) private bots;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
	uint256 private _ATHPrice;
	uint256 private _ATHResetPrice;
	uint256 private _ATHResetPercent;
	uint256 private _maxTxAmount = _tTotal;
    
    uint8 private _devFee = 2;
    uint8 private _ATHFee = 3;
    address payable private _devWallet;
    address payable private _ATHWallet;
    
    
    string private constant _name = unicode"All Time High \\_(\xE3\x83\x84)_/";
    string private constant _symbol = "ATH";
    uint8 private constant _decimals = 18;
    
    IUniswapV2Router02 private uniswapV2Router;
	IUniswapV2Pair private uniswapV2Pair;
    address private _uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
	
	
	event ATHUpdated(uint256 _ATHPrice, address _ATHWallet);
	event MaxTxAmountUpdated(uint256 _maxTxAmount);
	
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    receive() external payable {}   
    
    constructor () {
        _devWallet = payable(_msgSender());
        _ATHWallet = payable(0);
        _rOwned[address(this)] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_devWallet] = true;
		_ATHPrice = 0;
		_ATHResetPrice = 0;
		_ATHResetPercent = 60;
		emit Transfer(address(0), address(this), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
    
    function ATHPrice() public view returns (uint256) {
        return _ATHPrice;
    }
    
    function ATHWallet() public view returns (address) {
        return _ATHWallet;
    }
	
	function pairAddress() public view returns (address) {
        return _uniswapV2Pair;
    }
    
    function ATHResetPrice() public view returns (uint256) {
        return _ATHResetPrice;
    }
    
    function maxTxAmount() public view returns (uint256) {
        return _maxTxAmount;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
		if (owner != address(this)) {
			require(tradingOpen, "Trading not open yet");
		}
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            if (from == _uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]) {
                // Buying
				require(tradingOpen);
                require(amount <= _maxTxAmount, "Buy amount exceeds max TX amount");
                require(buycooldown[to] < block.timestamp, "Buying again too soon");
				
				sellcooldown[to] = block.timestamp + (5 minutes);
				buycooldown[to] = block.timestamp + (3 minutes);
				
				uint256 currentPrice = getPrice();
				if (currentPrice > _ATHPrice) {
					// new ATH has been reached 
					_ATHWallet = payable(to);
					_ATHPrice = currentPrice;
					_ATHResetPrice = currentPrice.sub(currentPrice.mul(_ATHResetPercent).div(10**2));
					emit ATHUpdated(_ATHPrice, _ATHWallet);
				}
			}
			
            if (from == _ATHWallet) {
				// Our ATH wallet holder is selling/transferring,
				// reset price so next buyer becomes ATH holder.
				_ATHPrice = 0;
				_ATHWallet = payable(0);
				emit ATHUpdated(_ATHPrice, _ATHWallet);
			}
            
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != _uniswapV2Pair && swapEnabled) {
                require(sellcooldown[from] < block.timestamp, "Selling too soon");
                // Check to see if price has gone below ATH Reset price.
                uint256 currentPrice = getPrice();
                if (currentPrice < _ATHResetPrice) {
                        _ATHPrice = 0;
                        _ATHWallet = payable(0);
                        _ATHResetPrice = 0;
                }
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0 && _ATHWallet != address(0)) {
                    sendETHToFee(address(this).balance);
                }
            }

        }
        _tokenTransfer(from,to,amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _devWallet.transfer(amount.div(4));
        _ATHWallet.transfer(amount.div(6));
    }
    
    function createPair() public onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(_uniswapV2Pair).approve(address(uniswapV2Router), type(uint256).max);
    }
    
    function openTrading() public onlyOwner(){
        require(!tradingOpen, "trading is already open");
        swapEnabled = true;
        tradingOpen = true;
    }
    
    function athResetPercent(uint256 newResetPercent) external onlyOwner() {
        _ATHResetPercent = newResetPercent;
    }
    
    function setBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
    
    function delBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }
	
	function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount) private {
        _transferStandard(sender, recipient, amount);
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function manualswap() external {
        require(_msgSender() == _devWallet);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _devWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
	
	function getPrice() public view returns (uint256) {
	    require(tradingOpen,"trading isn't open");
		IUniswapV2Pair pair = IUniswapV2Pair(_uniswapV2Pair);
		(uint112 token0, uint112 token1, uint32 blockTimestamp) = pair.getReserves();
		(uint256 tokenReserves, uint256 ethReserves) = (address(this) < uniswapV2Router.WETH()) ? (token0, token1) : (token1, token0);
		return ethReserves.mul(10000000000).div(tokenReserves);
	}
	
    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _devFee, _ATHFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

	function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
	
	
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_ATHPrice","type":"uint256"},{"indexed":false,"internalType":"address","name":"_ATHWallet","type":"address"}],"name":"ATHUpdated","type":"event"},{"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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ATHPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ATHResetPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ATHWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newResetPercent","type":"uint256"}],"name":"athResetPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

608060405269d3c21bcecceda10000006000196200001e9190620004af565b6000196200002d91906200046a565b60095569d3c21bcecceda1000000600e556002600f60006101000a81548160ff021916908360ff1602179055506003600f60016101000a81548160ff021916908360ff1602179055506000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff021916908315150217905550348015620000b957600080fd5b506000620000cc6200040b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200017a6200040b60201b60201c565b600f60026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600954600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160056000620002586200041360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000600f60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b819055506000600c81905550603c600d819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda1000000604051620003fd91906200044d565b60405180910390a362000545565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200044781620004a5565b82525050565b60006020820190506200046460008301846200043c565b92915050565b60006200047782620004a5565b91506200048483620004a5565b9250828210156200049a5762000499620004e7565b5b828203905092915050565b6000819050919050565b6000620004bc82620004a5565b9150620004c983620004a5565b925082620004dc57620004db62000516565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6140d880620005556000396000f3fe60806040526004361061016a5760003560e01c80638c0b5e22116100d1578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd8014610503578063c9567bf91461051a578063d543dbeb14610531578063dd62ed3e1461055a57610171565b8063a9059cbb14610474578063b515566a146104b1578063c20c66f7146104da57610171565b80638c0b5e22146103865780638da5cb5b146103b157806395d89b41146103dc57806398d5fdca146104075780639e78fb4f14610432578063a8b089821461044957610171565b8063273123b711610123578063273123b71461029c578063313ce567146102c557806361a63d31146102f05780636fc3eaec1461031b57806370a0823114610332578063715018a61461036f57610171565b806306fdde0314610176578063095ea7b3146101a157806315133c49146101de57806318160ddd1461020957806321588d901461023457806323b872dd1461025f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b610597565b6040516101989190613582565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612fc8565b6105d4565b6040516101d59190613567565b60405180910390f35b3480156101ea57600080fd5b506101f36105f2565b60405161020091906137a4565b60405180910390f35b34801561021557600080fd5b5061021e6105fc565b60405161022b91906137a4565b60405180910390f35b34801561024057600080fd5b5061024961060e565b6040516102569190613499565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190612f75565b610638565b6040516102939190613567565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612edb565b610711565b005b3480156102d157600080fd5b506102da610801565b6040516102e79190613842565b60405180910390f35b3480156102fc57600080fd5b5061030561080a565b60405161031291906137a4565b60405180910390f35b34801561032757600080fd5b50610330610814565b005b34801561033e57600080fd5b5061035960048036038101906103549190612edb565b610886565b60405161036691906137a4565b60405180910390f35b34801561037b57600080fd5b506103846108d7565b005b34801561039257600080fd5b5061039b610a2a565b6040516103a891906137a4565b60405180910390f35b3480156103bd57600080fd5b506103c6610a34565b6040516103d39190613499565b60405180910390f35b3480156103e857600080fd5b506103f1610a5d565b6040516103fe9190613582565b60405180910390f35b34801561041357600080fd5b5061041c610a9a565b60405161042991906137a4565b60405180910390f35b34801561043e57600080fd5b50610447610cd3565b005b34801561045557600080fd5b5061045e6111d0565b60405161046b9190613499565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190612fc8565b6111fa565b6040516104a89190613567565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d39190613008565b611218565b005b3480156104e657600080fd5b5061050160048036038101906104fc91906130d1565b611342565b005b34801561050f57600080fd5b506105186113e1565b005b34801561052657600080fd5b5061052f61145b565b005b34801561053d57600080fd5b50610558600480360381019061055391906130d1565b611578565b005b34801561056657600080fd5b50610581600480360381019061057c9190612f35565b6116c2565b60405161058e91906137a4565b60405180910390f35b60606040518060400160405280601781526020017f416c6c2054696d652048696768205c5f28e38384295f2f000000000000000000815250905090565b60006105e86105e1611749565b8484611751565b6001905092915050565b6000600c54905090565b600069d3c21bcecceda1000000905090565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061064584848461199f565b61070684610651611749565b6107018560405180606001604052806028815260200161407b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106b7611749565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461227c9092919063ffffffff16565b611751565b600190509392505050565b610719611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079d906136e4565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000600b54905090565b600f60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610855611749565b73ffffffffffffffffffffffffffffffffffffffff161461087557600080fd5b6000479050610883816122e0565b50565b60006108d0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123db565b9050919050565b6108df611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610963906136e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600e54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4154480000000000000000000000000000000000000000000000000000000000815250905090565b6000601360149054906101000a900460ff16610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae290613784565b60405180910390fd5b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610b5d57600080fd5b505afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b95919061307e565b925092509250600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0657600080fd5b505afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190612f08565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1610610c77578385610c7a565b84845b6dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150610cc882610cba6402540be4008461244990919063ffffffff16565b6124c490919063ffffffff16565b965050505050505090565b610cdb611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f906136e4565b60405180910390fd5b601360149054906101000a900460ff1615610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90613764565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e4930601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000611751565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8f57600080fd5b505afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190612f08565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2957600080fd5b505afa158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f619190612f08565b6040518363ffffffff1660e01b8152600401610f7e9291906134b4565b602060405180830381600087803b158015610f9857600080fd5b505af1158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190612f08565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061105930610886565b600080611064610a34565b426040518863ffffffff1660e01b815260040161108696959493929190613506565b6060604051808303818588803b15801561109f57600080fd5b505af11580156110b3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110d891906130fe565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161117a9291906134dd565b602060405180830381600087803b15801561119457600080fd5b505af11580156111a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cc9190613051565b5050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061120e611207611749565b848461199f565b6001905092915050565b611220611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906136e4565b60405180910390fd5b60005b815181101561133e576001600860008484815181106112d2576112d1613bea565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061133690613b43565b9150506112b0565b5050565b61134a611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce906136e4565b60405180910390fd5b80600d8190555050565b600f60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611422611749565b73ffffffffffffffffffffffffffffffffffffffff161461144257600080fd5b600061144d30610886565b90506114588161250e565b50565b611463611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e7906136e4565b60405180910390fd5b601360149054906101000a900460ff1615611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790613764565b60405180910390fd5b6001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b611580611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611604906136e4565b60405180910390fd5b60008111611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790613644565b60405180910390fd5b61168060646116728369d3c21bcecceda100000061244990919063ffffffff16565b6124c490919063ffffffff16565b600e819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600e546040516116b791906137a4565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613744565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182890613604565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118b457601360149054906101000a900460ff166118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa90613684565b60405180910390fd5b5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161199291906137a4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0690613724565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a76906135a4565b60405180910390fd5b60008111611ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab990613704565b60405180910390fd5b611aca610a34565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b385750611b08610a34565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561226c57600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611be15750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bea57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c955750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ceb5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6e57601360149054906101000a900460ff16611d0957600080fd5b600e54811115611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d45906135c4565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc690613664565b60405180910390fd5b61012c42611ddd9190613903565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060b442611e2d9190613903565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611e7a610a9a565b9050600b54811115611f6c5782601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b81905550611f08611ef96064611eeb600d548561244990919063ffffffff16565b6124c490919063ffffffff16565b8261279690919063ffffffff16565b600c819055507f1b23c40005f4d445a417325cc4cc2515cfbe529f49945aa04fec1d79ca3414d2600b54601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611f639291906137bf565b60405180910390a15b505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561206c576000600b819055506000601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1b23c40005f4d445a417325cc4cc2515cfbe529f49945aa04fec1d79ca3414d2600b54601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516120639291906137bf565b60405180910390a15b600061207730610886565b9050601360159054906101000a900460ff161580156120e45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120fc5750601360169054906101000a900460ff165b1561226a5742600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612179906136a4565b60405180910390fd5b600061218c610a9a565b9050600c548110156121eb576000600b819055506000601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c819055505b6121f48261250e565b60004790506000811180156122585750600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561226757612266476122e0565b5b50505b505b6122778383836127e0565b505050565b60008383111582906122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb9190613582565b60405180910390fd5b50600083856122d391906139e4565b9050809150509392505050565b600f60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6123306004846124c490919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561235b573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6123ac6006846124c490919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156123d7573d6000803e3d6000fd5b5050565b6000600954821115612422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612419906135e4565b60405180910390fd5b600061242c6127f0565b905061244181846124c490919063ffffffff16565b915050919050565b60008083141561245c57600090506124be565b6000828461246a919061398a565b90508284826124799190613959565b146124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b0906136c4565b60405180910390fd5b809150505b92915050565b600061250683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061281b565b905092915050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561254657612545613c19565b5b6040519080825280602002602001820160405280156125745781602001602082028036833780820191505090505b509050308160008151811061258c5761258b613bea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561262e57600080fd5b505afa158015612642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126669190612f08565b8160018151811061267a57612679613bea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126e130601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611751565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127459594939291906137e8565b600060405180830381600087803b15801561275f57600080fd5b505af1158015612773573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b60006127d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061227c565b905092915050565b6127eb83838361287e565b505050565b60008060006127fd612a49565b9150915061281481836124c490919063ffffffff16565b9250505090565b60008083118290612862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128599190613582565b60405180910390fd5b50600083856128719190613959565b9050809150509392505050565b60008060008060008061289087612aae565b9550955095509550955095506128ee86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061298385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129cf81612b94565b6129d98483612c51565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a3691906137a4565b60405180910390a3505050505050505050565b60008060006009549050600069d3c21bcecceda10000009050612a8169d3c21bcecceda10000006009546124c490919063ffffffff16565b821015612aa15760095469d3c21bcecceda1000000935093505050612aaa565b81819350935050505b9091565b6000806000806000806000806000612aeb8a600f60009054906101000a900460ff1660ff16600f60019054906101000a900460ff1660ff16612c8b565b9250925092506000612afb6127f0565b90506000806000612b0e8e878787612d21565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612b459190613903565b905083811015612b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8190613624565b60405180910390fd5b8091505092915050565b6000612b9e6127f0565b90506000612bb5828461244990919063ffffffff16565b9050612c0981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c668260095461279690919063ffffffff16565b600981905550612c8181600a54612b3690919063ffffffff16565b600a819055505050565b600080600080612cb76064612ca9888a61244990919063ffffffff16565b6124c490919063ffffffff16565b90506000612ce16064612cd3888b61244990919063ffffffff16565b6124c490919063ffffffff16565b90506000612d0a82612cfc858c61279690919063ffffffff16565b61279690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d3a858961244990919063ffffffff16565b90506000612d51868961244990919063ffffffff16565b90506000612d68878961244990919063ffffffff16565b90506000612d9182612d83858761279690919063ffffffff16565b61279690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000612dbd612db884613882565b61385d565b90508083825260208201905082856020860282011115612de057612ddf613c4d565b5b60005b85811015612e105781612df68882612e1a565b845260208401935060208301925050600181019050612de3565b5050509392505050565b600081359050612e2981614007565b92915050565b600081519050612e3e81614007565b92915050565b600082601f830112612e5957612e58613c48565b5b8135612e69848260208601612daa565b91505092915050565b600081519050612e818161401e565b92915050565b600081519050612e9681614035565b92915050565b600081359050612eab8161404c565b92915050565b600081519050612ec08161404c565b92915050565b600081519050612ed581614063565b92915050565b600060208284031215612ef157612ef0613c57565b5b6000612eff84828501612e1a565b91505092915050565b600060208284031215612f1e57612f1d613c57565b5b6000612f2c84828501612e2f565b91505092915050565b60008060408385031215612f4c57612f4b613c57565b5b6000612f5a85828601612e1a565b9250506020612f6b85828601612e1a565b9150509250929050565b600080600060608486031215612f8e57612f8d613c57565b5b6000612f9c86828701612e1a565b9350506020612fad86828701612e1a565b9250506040612fbe86828701612e9c565b9150509250925092565b60008060408385031215612fdf57612fde613c57565b5b6000612fed85828601612e1a565b9250506020612ffe85828601612e9c565b9150509250929050565b60006020828403121561301e5761301d613c57565b5b600082013567ffffffffffffffff81111561303c5761303b613c52565b5b61304884828501612e44565b91505092915050565b60006020828403121561306757613066613c57565b5b600061307584828501612e72565b91505092915050565b60008060006060848603121561309757613096613c57565b5b60006130a586828701612e87565b93505060206130b686828701612e87565b92505060406130c786828701612ec6565b9150509250925092565b6000602082840312156130e7576130e6613c57565b5b60006130f584828501612e9c565b91505092915050565b60008060006060848603121561311757613116613c57565b5b600061312586828701612eb1565b935050602061313686828701612eb1565b925050604061314786828701612eb1565b9150509250925092565b600061315d8383613178565b60208301905092915050565b61317281613a97565b82525050565b61318181613a18565b82525050565b61319081613a18565b82525050565b60006131a1826138be565b6131ab81856138e1565b93506131b6836138ae565b8060005b838110156131e75781516131ce8882613151565b97506131d9836138d4565b9250506001810190506131ba565b5085935050505092915050565b6131fd81613a2a565b82525050565b61320c81613aa9565b82525050565b600061321d826138c9565b61322781856138f2565b9350613237818560208601613adf565b61324081613c5c565b840191505092915050565b60006132586023836138f2565b915061326382613c6d565b604082019050919050565b600061327b6020836138f2565b915061328682613cbc565b602082019050919050565b600061329e602a836138f2565b91506132a982613ce5565b604082019050919050565b60006132c16022836138f2565b91506132cc82613d34565b604082019050919050565b60006132e4601b836138f2565b91506132ef82613d83565b602082019050919050565b6000613307601d836138f2565b915061331282613dac565b602082019050919050565b600061332a6015836138f2565b915061333582613dd5565b602082019050919050565b600061334d6014836138f2565b915061335882613dfe565b602082019050919050565b60006133706010836138f2565b915061337b82613e27565b602082019050919050565b60006133936021836138f2565b915061339e82613e50565b604082019050919050565b60006133b66020836138f2565b91506133c182613e9f565b602082019050919050565b60006133d96029836138f2565b91506133e482613ec8565b604082019050919050565b60006133fc6025836138f2565b915061340782613f17565b604082019050919050565b600061341f6024836138f2565b915061342a82613f66565b604082019050919050565b60006134426017836138f2565b915061344d82613fb5565b602082019050919050565b60006134656012836138f2565b915061347082613fde565b602082019050919050565b61348481613a70565b82525050565b61349381613a8a565b82525050565b60006020820190506134ae6000830184613187565b92915050565b60006040820190506134c96000830185613187565b6134d66020830184613187565b9392505050565b60006040820190506134f26000830185613187565b6134ff602083018461347b565b9392505050565b600060c08201905061351b6000830189613187565b613528602083018861347b565b6135356040830187613203565b6135426060830186613203565b61354f6080830185613187565b61355c60a083018461347b565b979650505050505050565b600060208201905061357c60008301846131f4565b92915050565b6000602082019050818103600083015261359c8184613212565b905092915050565b600060208201905081810360008301526135bd8161324b565b9050919050565b600060208201905081810360008301526135dd8161326e565b9050919050565b600060208201905081810360008301526135fd81613291565b9050919050565b6000602082019050818103600083015261361d816132b4565b9050919050565b6000602082019050818103600083015261363d816132d7565b9050919050565b6000602082019050818103600083015261365d816132fa565b9050919050565b6000602082019050818103600083015261367d8161331d565b9050919050565b6000602082019050818103600083015261369d81613340565b9050919050565b600060208201905081810360008301526136bd81613363565b9050919050565b600060208201905081810360008301526136dd81613386565b9050919050565b600060208201905081810360008301526136fd816133a9565b9050919050565b6000602082019050818103600083015261371d816133cc565b9050919050565b6000602082019050818103600083015261373d816133ef565b9050919050565b6000602082019050818103600083015261375d81613412565b9050919050565b6000602082019050818103600083015261377d81613435565b9050919050565b6000602082019050818103600083015261379d81613458565b9050919050565b60006020820190506137b9600083018461347b565b92915050565b60006040820190506137d4600083018561347b565b6137e16020830184613169565b9392505050565b600060a0820190506137fd600083018861347b565b61380a6020830187613203565b818103604083015261381c8186613196565b905061382b6060830185613187565b613838608083018461347b565b9695505050505050565b6000602082019050613857600083018461348a565b92915050565b6000613867613878565b90506138738282613b12565b919050565b6000604051905090565b600067ffffffffffffffff82111561389d5761389c613c19565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061390e82613a70565b915061391983613a70565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561394e5761394d613b8c565b5b828201905092915050565b600061396482613a70565b915061396f83613a70565b92508261397f5761397e613bbb565b5b828204905092915050565b600061399582613a70565b91506139a083613a70565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d9576139d8613b8c565b5b828202905092915050565b60006139ef82613a70565b91506139fa83613a70565b925082821015613a0d57613a0c613b8c565b5b828203905092915050565b6000613a2382613a50565b9050919050565b60008115159050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000613aa282613abb565b9050919050565b6000613ab482613a70565b9050919050565b6000613ac682613acd565b9050919050565b6000613ad882613a50565b9050919050565b60005b83811015613afd578082015181840152602081019050613ae2565b83811115613b0c576000848401525b50505050565b613b1b82613c5c565b810181811067ffffffffffffffff82111715613b3a57613b39613c19565b5b80604052505050565b6000613b4e82613a70565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b8157613b80613b8c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42757920616d6f756e742065786365656473206d617820545820616d6f756e74600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f427579696e6720616761696e20746f6f20736f6f6e0000000000000000000000600082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f53656c6c696e6720746f6f20736f6f6e00000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f74726164696e672069736e2774206f70656e0000000000000000000000000000600082015250565b61401081613a18565b811461401b57600080fd5b50565b61402781613a2a565b811461403257600080fd5b50565b61403e81613a36565b811461404957600080fd5b50565b61405581613a70565b811461406057600080fd5b50565b61406c81613a7a565b811461407757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220de5b8347861db0c3fc26b5547d7558b3763f4595312dcd1a0458dbd351609cfa64736f6c63430008060033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80638c0b5e22116100d1578063a9059cbb1161008a578063c3c8cd8011610064578063c3c8cd8014610503578063c9567bf91461051a578063d543dbeb14610531578063dd62ed3e1461055a57610171565b8063a9059cbb14610474578063b515566a146104b1578063c20c66f7146104da57610171565b80638c0b5e22146103865780638da5cb5b146103b157806395d89b41146103dc57806398d5fdca146104075780639e78fb4f14610432578063a8b089821461044957610171565b8063273123b711610123578063273123b71461029c578063313ce567146102c557806361a63d31146102f05780636fc3eaec1461031b57806370a0823114610332578063715018a61461036f57610171565b806306fdde0314610176578063095ea7b3146101a157806315133c49146101de57806318160ddd1461020957806321588d901461023457806323b872dd1461025f57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b610597565b6040516101989190613582565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612fc8565b6105d4565b6040516101d59190613567565b60405180910390f35b3480156101ea57600080fd5b506101f36105f2565b60405161020091906137a4565b60405180910390f35b34801561021557600080fd5b5061021e6105fc565b60405161022b91906137a4565b60405180910390f35b34801561024057600080fd5b5061024961060e565b6040516102569190613499565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190612f75565b610638565b6040516102939190613567565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be9190612edb565b610711565b005b3480156102d157600080fd5b506102da610801565b6040516102e79190613842565b60405180910390f35b3480156102fc57600080fd5b5061030561080a565b60405161031291906137a4565b60405180910390f35b34801561032757600080fd5b50610330610814565b005b34801561033e57600080fd5b5061035960048036038101906103549190612edb565b610886565b60405161036691906137a4565b60405180910390f35b34801561037b57600080fd5b506103846108d7565b005b34801561039257600080fd5b5061039b610a2a565b6040516103a891906137a4565b60405180910390f35b3480156103bd57600080fd5b506103c6610a34565b6040516103d39190613499565b60405180910390f35b3480156103e857600080fd5b506103f1610a5d565b6040516103fe9190613582565b60405180910390f35b34801561041357600080fd5b5061041c610a9a565b60405161042991906137a4565b60405180910390f35b34801561043e57600080fd5b50610447610cd3565b005b34801561045557600080fd5b5061045e6111d0565b60405161046b9190613499565b60405180910390f35b34801561048057600080fd5b5061049b60048036038101906104969190612fc8565b6111fa565b6040516104a89190613567565b60405180910390f35b3480156104bd57600080fd5b506104d860048036038101906104d39190613008565b611218565b005b3480156104e657600080fd5b5061050160048036038101906104fc91906130d1565b611342565b005b34801561050f57600080fd5b506105186113e1565b005b34801561052657600080fd5b5061052f61145b565b005b34801561053d57600080fd5b50610558600480360381019061055391906130d1565b611578565b005b34801561056657600080fd5b50610581600480360381019061057c9190612f35565b6116c2565b60405161058e91906137a4565b60405180910390f35b60606040518060400160405280601781526020017f416c6c2054696d652048696768205c5f28e38384295f2f000000000000000000815250905090565b60006105e86105e1611749565b8484611751565b6001905092915050565b6000600c54905090565b600069d3c21bcecceda1000000905090565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061064584848461199f565b61070684610651611749565b6107018560405180606001604052806028815260200161407b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106b7611749565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461227c9092919063ffffffff16565b611751565b600190509392505050565b610719611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079d906136e4565b60405180910390fd5b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60006012905090565b6000600b54905090565b600f60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610855611749565b73ffffffffffffffffffffffffffffffffffffffff161461087557600080fd5b6000479050610883816122e0565b50565b60006108d0600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123db565b9050919050565b6108df611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610963906136e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600e54905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f4154480000000000000000000000000000000000000000000000000000000000815250905090565b6000601360149054906101000a900460ff16610aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae290613784565b60405180910390fd5b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008060008373ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015610b5d57600080fd5b505afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b95919061307e565b925092509250600080601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610c0657600080fd5b505afa158015610c1a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3e9190612f08565b73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1610610c77578385610c7a565b84845b6dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150610cc882610cba6402540be4008461244990919063ffffffff16565b6124c490919063ffffffff16565b965050505050505090565b610cdb611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5f906136e4565b60405180910390fd5b601360149054906101000a900460ff1615610db8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610daf90613764565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e4930601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000611751565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610e8f57600080fd5b505afa158015610ea3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ec79190612f08565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2957600080fd5b505afa158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f619190612f08565b6040518363ffffffff1660e01b8152600401610f7e9291906134b4565b602060405180830381600087803b158015610f9857600080fd5b505af1158015610fac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd09190612f08565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061105930610886565b600080611064610a34565b426040518863ffffffff1660e01b815260040161108696959493929190613506565b6060604051808303818588803b15801561109f57600080fd5b505af11580156110b3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906110d891906130fe565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161117a9291906134dd565b602060405180830381600087803b15801561119457600080fd5b505af11580156111a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111cc9190613051565b5050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600061120e611207611749565b848461199f565b6001905092915050565b611220611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a4906136e4565b60405180910390fd5b60005b815181101561133e576001600860008484815181106112d2576112d1613bea565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061133690613b43565b9150506112b0565b5050565b61134a611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce906136e4565b60405180910390fd5b80600d8190555050565b600f60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611422611749565b73ffffffffffffffffffffffffffffffffffffffff161461144257600080fd5b600061144d30610886565b90506114588161250e565b50565b611463611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e7906136e4565b60405180910390fd5b601360149054906101000a900460ff1615611540576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153790613764565b60405180910390fd5b6001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b611580611749565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611604906136e4565b60405180910390fd5b60008111611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164790613644565b60405180910390fd5b61168060646116728369d3c21bcecceda100000061244990919063ffffffff16565b6124c490919063ffffffff16565b600e819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf600e546040516116b791906137a4565b60405180910390a150565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b890613744565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182890613604565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118b457601360149054906101000a900460ff166118b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118aa90613684565b60405180910390fd5b5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161199291906137a4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0690613724565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a76906135a4565b60405180910390fd5b60008111611ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab990613704565b60405180910390fd5b611aca610a34565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b385750611b08610a34565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561226c57600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611be15750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bea57600080fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c955750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ceb5750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f6e57601360149054906101000a900460ff16611d0957600080fd5b600e54811115611d4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d45906135c4565b60405180910390fd5b42600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611dcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc690613664565b60405180910390fd5b61012c42611ddd9190613903565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060b442611e2d9190613903565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611e7a610a9a565b9050600b54811115611f6c5782601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b81905550611f08611ef96064611eeb600d548561244990919063ffffffff16565b6124c490919063ffffffff16565b8261279690919063ffffffff16565b600c819055507f1b23c40005f4d445a417325cc4cc2515cfbe529f49945aa04fec1d79ca3414d2600b54601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611f639291906137bf565b60405180910390a15b505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561206c576000600b819055506000601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f1b23c40005f4d445a417325cc4cc2515cfbe529f49945aa04fec1d79ca3414d2600b54601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516120639291906137bf565b60405180910390a15b600061207730610886565b9050601360159054906101000a900460ff161580156120e45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120fc5750601360169054906101000a900460ff165b1561226a5742600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612182576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612179906136a4565b60405180910390fd5b600061218c610a9a565b9050600c548110156121eb576000600b819055506000601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c819055505b6121f48261250e565b60004790506000811180156122585750600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b1561226757612266476122e0565b5b50505b505b6122778383836127e0565b505050565b60008383111582906122c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bb9190613582565b60405180910390fd5b50600083856122d391906139e4565b9050809150509392505050565b600f60029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6123306004846124c490919063ffffffff16565b9081150290604051600060405180830381858888f1935050505015801561235b573d6000803e3d6000fd5b50601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6123ac6006846124c490919063ffffffff16565b9081150290604051600060405180830381858888f193505050501580156123d7573d6000803e3d6000fd5b5050565b6000600954821115612422576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612419906135e4565b60405180910390fd5b600061242c6127f0565b905061244181846124c490919063ffffffff16565b915050919050565b60008083141561245c57600090506124be565b6000828461246a919061398a565b90508284826124799190613959565b146124b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b0906136c4565b60405180910390fd5b809150505b92915050565b600061250683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061281b565b905092915050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561254657612545613c19565b5b6040519080825280602002602001820160405280156125745781602001602082028036833780820191505090505b509050308160008151811061258c5761258b613bea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561262e57600080fd5b505afa158015612642573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126669190612f08565b8160018151811061267a57612679613bea565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126e130601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611751565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016127459594939291906137e8565b600060405180830381600087803b15801561275f57600080fd5b505af1158015612773573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b60006127d883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061227c565b905092915050565b6127eb83838361287e565b505050565b60008060006127fd612a49565b9150915061281481836124c490919063ffffffff16565b9250505090565b60008083118290612862576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128599190613582565b60405180910390fd5b50600083856128719190613959565b9050809150509392505050565b60008060008060008061289087612aae565b9550955095509550955095506128ee86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279690919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061298385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129cf81612b94565b6129d98483612c51565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612a3691906137a4565b60405180910390a3505050505050505050565b60008060006009549050600069d3c21bcecceda10000009050612a8169d3c21bcecceda10000006009546124c490919063ffffffff16565b821015612aa15760095469d3c21bcecceda1000000935093505050612aaa565b81819350935050505b9091565b6000806000806000806000806000612aeb8a600f60009054906101000a900460ff1660ff16600f60019054906101000a900460ff1660ff16612c8b565b9250925092506000612afb6127f0565b90506000806000612b0e8e878787612d21565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000808284612b459190613903565b905083811015612b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b8190613624565b60405180910390fd5b8091505092915050565b6000612b9e6127f0565b90506000612bb5828461244990919063ffffffff16565b9050612c0981600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b3690919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612c668260095461279690919063ffffffff16565b600981905550612c8181600a54612b3690919063ffffffff16565b600a819055505050565b600080600080612cb76064612ca9888a61244990919063ffffffff16565b6124c490919063ffffffff16565b90506000612ce16064612cd3888b61244990919063ffffffff16565b6124c490919063ffffffff16565b90506000612d0a82612cfc858c61279690919063ffffffff16565b61279690919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612d3a858961244990919063ffffffff16565b90506000612d51868961244990919063ffffffff16565b90506000612d68878961244990919063ffffffff16565b90506000612d9182612d83858761279690919063ffffffff16565b61279690919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000612dbd612db884613882565b61385d565b90508083825260208201905082856020860282011115612de057612ddf613c4d565b5b60005b85811015612e105781612df68882612e1a565b845260208401935060208301925050600181019050612de3565b5050509392505050565b600081359050612e2981614007565b92915050565b600081519050612e3e81614007565b92915050565b600082601f830112612e5957612e58613c48565b5b8135612e69848260208601612daa565b91505092915050565b600081519050612e818161401e565b92915050565b600081519050612e9681614035565b92915050565b600081359050612eab8161404c565b92915050565b600081519050612ec08161404c565b92915050565b600081519050612ed581614063565b92915050565b600060208284031215612ef157612ef0613c57565b5b6000612eff84828501612e1a565b91505092915050565b600060208284031215612f1e57612f1d613c57565b5b6000612f2c84828501612e2f565b91505092915050565b60008060408385031215612f4c57612f4b613c57565b5b6000612f5a85828601612e1a565b9250506020612f6b85828601612e1a565b9150509250929050565b600080600060608486031215612f8e57612f8d613c57565b5b6000612f9c86828701612e1a565b9350506020612fad86828701612e1a565b9250506040612fbe86828701612e9c565b9150509250925092565b60008060408385031215612fdf57612fde613c57565b5b6000612fed85828601612e1a565b9250506020612ffe85828601612e9c565b9150509250929050565b60006020828403121561301e5761301d613c57565b5b600082013567ffffffffffffffff81111561303c5761303b613c52565b5b61304884828501612e44565b91505092915050565b60006020828403121561306757613066613c57565b5b600061307584828501612e72565b91505092915050565b60008060006060848603121561309757613096613c57565b5b60006130a586828701612e87565b93505060206130b686828701612e87565b92505060406130c786828701612ec6565b9150509250925092565b6000602082840312156130e7576130e6613c57565b5b60006130f584828501612e9c565b91505092915050565b60008060006060848603121561311757613116613c57565b5b600061312586828701612eb1565b935050602061313686828701612eb1565b925050604061314786828701612eb1565b9150509250925092565b600061315d8383613178565b60208301905092915050565b61317281613a97565b82525050565b61318181613a18565b82525050565b61319081613a18565b82525050565b60006131a1826138be565b6131ab81856138e1565b93506131b6836138ae565b8060005b838110156131e75781516131ce8882613151565b97506131d9836138d4565b9250506001810190506131ba565b5085935050505092915050565b6131fd81613a2a565b82525050565b61320c81613aa9565b82525050565b600061321d826138c9565b61322781856138f2565b9350613237818560208601613adf565b61324081613c5c565b840191505092915050565b60006132586023836138f2565b915061326382613c6d565b604082019050919050565b600061327b6020836138f2565b915061328682613cbc565b602082019050919050565b600061329e602a836138f2565b91506132a982613ce5565b604082019050919050565b60006132c16022836138f2565b91506132cc82613d34565b604082019050919050565b60006132e4601b836138f2565b91506132ef82613d83565b602082019050919050565b6000613307601d836138f2565b915061331282613dac565b602082019050919050565b600061332a6015836138f2565b915061333582613dd5565b602082019050919050565b600061334d6014836138f2565b915061335882613dfe565b602082019050919050565b60006133706010836138f2565b915061337b82613e27565b602082019050919050565b60006133936021836138f2565b915061339e82613e50565b604082019050919050565b60006133b66020836138f2565b91506133c182613e9f565b602082019050919050565b60006133d96029836138f2565b91506133e482613ec8565b604082019050919050565b60006133fc6025836138f2565b915061340782613f17565b604082019050919050565b600061341f6024836138f2565b915061342a82613f66565b604082019050919050565b60006134426017836138f2565b915061344d82613fb5565b602082019050919050565b60006134656012836138f2565b915061347082613fde565b602082019050919050565b61348481613a70565b82525050565b61349381613a8a565b82525050565b60006020820190506134ae6000830184613187565b92915050565b60006040820190506134c96000830185613187565b6134d66020830184613187565b9392505050565b60006040820190506134f26000830185613187565b6134ff602083018461347b565b9392505050565b600060c08201905061351b6000830189613187565b613528602083018861347b565b6135356040830187613203565b6135426060830186613203565b61354f6080830185613187565b61355c60a083018461347b565b979650505050505050565b600060208201905061357c60008301846131f4565b92915050565b6000602082019050818103600083015261359c8184613212565b905092915050565b600060208201905081810360008301526135bd8161324b565b9050919050565b600060208201905081810360008301526135dd8161326e565b9050919050565b600060208201905081810360008301526135fd81613291565b9050919050565b6000602082019050818103600083015261361d816132b4565b9050919050565b6000602082019050818103600083015261363d816132d7565b9050919050565b6000602082019050818103600083015261365d816132fa565b9050919050565b6000602082019050818103600083015261367d8161331d565b9050919050565b6000602082019050818103600083015261369d81613340565b9050919050565b600060208201905081810360008301526136bd81613363565b9050919050565b600060208201905081810360008301526136dd81613386565b9050919050565b600060208201905081810360008301526136fd816133a9565b9050919050565b6000602082019050818103600083015261371d816133cc565b9050919050565b6000602082019050818103600083015261373d816133ef565b9050919050565b6000602082019050818103600083015261375d81613412565b9050919050565b6000602082019050818103600083015261377d81613435565b9050919050565b6000602082019050818103600083015261379d81613458565b9050919050565b60006020820190506137b9600083018461347b565b92915050565b60006040820190506137d4600083018561347b565b6137e16020830184613169565b9392505050565b600060a0820190506137fd600083018861347b565b61380a6020830187613203565b818103604083015261381c8186613196565b905061382b6060830185613187565b613838608083018461347b565b9695505050505050565b6000602082019050613857600083018461348a565b92915050565b6000613867613878565b90506138738282613b12565b919050565b6000604051905090565b600067ffffffffffffffff82111561389d5761389c613c19565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600061390e82613a70565b915061391983613a70565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561394e5761394d613b8c565b5b828201905092915050565b600061396482613a70565b915061396f83613a70565b92508261397f5761397e613bbb565b5b828204905092915050565b600061399582613a70565b91506139a083613a70565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139d9576139d8613b8c565b5b828202905092915050565b60006139ef82613a70565b91506139fa83613a70565b925082821015613a0d57613a0c613b8c565b5b828203905092915050565b6000613a2382613a50565b9050919050565b60008115159050919050565b60006dffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000613aa282613abb565b9050919050565b6000613ab482613a70565b9050919050565b6000613ac682613acd565b9050919050565b6000613ad882613a50565b9050919050565b60005b83811015613afd578082015181840152602081019050613ae2565b83811115613b0c576000848401525b50505050565b613b1b82613c5c565b810181811067ffffffffffffffff82111715613b3a57613b39613c19565b5b80604052505050565b6000613b4e82613a70565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613b8157613b80613b8c565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f42757920616d6f756e742065786365656473206d617820545820616d6f756e74600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b7f427579696e6720616761696e20746f6f20736f6f6e0000000000000000000000600082015250565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b7f53656c6c696e6720746f6f20736f6f6e00000000000000000000000000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b7f74726164696e672069736e2774206f70656e0000000000000000000000000000600082015250565b61401081613a18565b811461401b57600080fd5b50565b61402781613a2a565b811461403257600080fd5b50565b61403e81613a36565b811461404957600080fd5b50565b61405581613a70565b811461406057600080fd5b50565b61406c81613a7a565b811461407757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220de5b8347861db0c3fc26b5547d7558b3763f4595312dcd1a0458dbd351609cfa64736f6c63430008060033

Deployed Bytecode Sourcemap

3655:12725:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5727:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7084:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6406:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6004;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6208:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7253:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12463:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5913:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6111:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14055:189;;;;;;;;;;;;;:::i;:::-;;6612:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2589:148;;;;;;;;;;;;;:::i;:::-;;6513:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2375:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5818:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14250:431;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11279:682;;;;;;;;;;;;;:::i;:::-;;6301:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6758:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12287:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12151:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13853:190;;;;;;;;;;;;;:::i;:::-;;11973:166;;;;;;;;;;;;;:::i;:::-;;12557:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6933:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5727:83;5764:13;5797:5;;;;;;;;;;;;;;;;;5790:12;;5727:83;:::o;7084:161::-;7159:4;7176:39;7185:12;:10;:12::i;:::-;7199:7;7208:6;7176:8;:39::i;:::-;7233:4;7226:11;;7084:161;;;;:::o;6406:95::-;6452:7;6479:14;;6472:21;;6406:95;:::o;6004:::-;6057:7;4221:16;6077:14;;6004:95;:::o;6208:87::-;6250:7;6277:10;;;;;;;;;;;6270:17;;6208:87;:::o;7253:313::-;7351:4;7368:36;7378:6;7386:9;7397:6;7368:9;:36::i;:::-;7415:121;7424:6;7432:12;:10;:12::i;:::-;7446:89;7484:6;7446:89;;;;;;;;;;;;;;;;;:11;:19;7458:6;7446:19;;;;;;;;;;;;;;;:33;7466:12;:10;:12::i;:::-;7446:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7415:8;:121::i;:::-;7554:4;7547:11;;7253:313;;;;;:::o;12463:88::-;2512:12;:10;:12::i;:::-;2502:22;;:6;;;;;;;;;;:22;;;2494:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12538:5:::1;12523:4;:12;12528:6;12523:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12463:88:::0;:::o;5913:83::-;5954:5;4800:2;5972:16;;5913:83;:::o;6111:85::-;6152:7;6179:9;;6172:16;;6111:85;:::o;14055:189::-;14121:10;;;;;;;;;;;14105:26;;:12;:10;:12::i;:::-;:26;;;14097:35;;;;;;14143:26;14172:21;14143:50;;14204:32;14217:18;14204:12;:32::i;:::-;14086:158;14055:189::o;6612:138::-;6678:7;6705:37;6725:7;:16;6733:7;6725:16;;;;;;;;;;;;;;;;6705:19;:37::i;:::-;6698:44;;6612:138;;;:::o;2589:148::-;2512:12;:10;:12::i;:::-;2502:22;;:6;;;;;;;;;;:22;;;2494:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2696:1:::1;2659:40;;2680:6;::::0;::::1;;;;;;;;2659:40;;;;;;;;;;;;2727:1;2710:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2589:148::o:0;6513:91::-;6557:7;6584:12;;6577:19;;6513:91;:::o;2375:79::-;2413:7;2440:6;;;;;;;;;;;2433:13;;2375:79;:::o;5818:87::-;5857:13;5890:7;;;;;;;;;;;;;;;;;5883:14;;5818:87;:::o;14250:431::-;14291:7;14316:11;;;;;;;;;;;14308:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14354:19;14391:14;;;;;;;;;;;14354:52;;14412:14;14428;14444:21;14469:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14411:76;;;;;;14493:21;14516:19;14556:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14540:38;;14548:4;14540:38;;;14539:78;;14602:6;14610;14539:78;;;14583:6;14591;14539:78;14492:125;;;;;;;;14629:47;14662:13;14629:28;14645:11;14629;:15;;:28;;;;:::i;:::-;:32;;:47;;;;:::i;:::-;14622:54;;;;;;;;14250:431;:::o;11279:682::-;2512:12;:10;:12::i;:::-;2502:22;;:6;;;;;;;;;;:22;;;2494:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11340:11:::1;;;;;;;;;;;11339:12;11331:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11389:35;11446:42;11389:100;;11518:16;11500:15;;:34;;;;;;;;;;;;;;;;;;11545:58;11562:4;11577:15;;;;;;;;;;;4221:16;11545:8;:58::i;:::-;11649:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11631:56;;;11696:4;11703:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11631:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11614:14;;:113;;;;;;;;;;;;;;;;;;11738:15;;;;;;;;;;;:31;;;11777:21;11808:4;11814:24;11832:4;11814:9;:24::i;:::-;11839:1;11841::::0;11843:7:::1;:5;:7::i;:::-;11851:15;11738:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11885:14;;;;;;;;;;;11878:30;;;11917:15;;;;;;;;;;;11935:17;11878:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11320:641;11279:682::o:0;6301:93::-;6345:7;6372:14;;;;;;;;;;;6365:21;;6301:93;:::o;6758:167::-;6836:4;6853:42;6863:12;:10;:12::i;:::-;6877:9;6888:6;6853:9;:42::i;:::-;6913:4;6906:11;;6758:167;;;;:::o;12287:164::-;2512:12;:10;:12::i;:::-;2502:22;;:6;;;;;;;;;;:22;;;2494:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12361:6:::1;12356:88;12377:5;:12;12373:1;:16;12356:88;;;12428:4;12411;:14;12416:5;12422:1;12416:8;;;;;;;;:::i;:::-;;;;;;;;12411:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12391:3;;;;;:::i;:::-;;;;12356:88;;;;12287:164:::0;:::o;12151:124::-;2512:12;:10;:12::i;:::-;2502:22;;:6;;;;;;;;;;:22;;;2494:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12252:15:::1;12233:16;:34;;;;12151:124:::0;:::o;13853:190::-;13919:10;;;;;;;;;;;13903:26;;:12;:10;:12::i;:::-;:26;;;13895:35;;;;;;13941:23;13967:24;13985:4;13967:9;:24::i;:::-;13941:50;;14002:33;14019:15;14002:16;:33::i;:::-;13884:159;13853:190::o;11973:166::-;2512:12;:10;:12::i;:::-;2502:22;;:6;;;;;;;;;;:22;;;2494:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12034:11:::1;;;;;;;;;;;12033:12;12025:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12098:4;12084:11;;:18;;;;;;;;;;;;;;;;;;12127:4;12113:11;;:18;;;;;;;;;;;;;;;;;;11973:166::o:0;12557:255::-;2512:12;:10;:12::i;:::-;2502:22;;:6;;;;;;;;;;:22;;;2494:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12659:1:::1;12644:12;:16;12636:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12720:36;12750:5;12720:25;12732:12;4221:16;12720:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;12705:12;:51;;;;12772:32;12791:12;;12772:32;;;;;;:::i;:::-;;;;;;;;12557:255:::0;:::o;6933:143::-;7014:7;7041:11;:18;7053:5;7041:18;;;;;;;;;;;;;;;:27;7060:7;7041:27;;;;;;;;;;;;;;;;7034:34;;6933:143;;;;:::o;93:98::-;146:7;173:10;166:17;;93:98;:::o;7836:423::-;7946:1;7929:19;;:5;:19;;;;7921:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8027:1;8008:21;;:7;:21;;;;8000:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8094:4;8077:22;;:5;:22;;;8073:84;;8115:11;;;;;;;;;;;8107:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;8073:84;8197:6;8167:11;:18;8179:5;8167:18;;;;;;;;;;;;;;;:27;8186:7;8167:27;;;;;;;;;;;;;;;:36;;;;8235:7;8219:32;;8228:5;8219:32;;;8244:6;8219:32;;;;;;:::i;:::-;;;;;;;;7836:423;;;:::o;8267:2349::-;8371:1;8355:18;;:4;:18;;;;8347:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8448:1;8434:16;;:2;:16;;;;8426:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8518:1;8509:6;:10;8501:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8588:7;:5;:7::i;:::-;8580:15;;:4;:15;;;;:32;;;;;8605:7;:5;:7::i;:::-;8599:13;;:2;:13;;;;8580:32;8576:1992;;;8638:4;:10;8643:4;8638:10;;;;;;;;;;;;;;;;;;;;;;;;;8637:11;:24;;;;;8653:4;:8;8658:2;8653:8;;;;;;;;;;;;;;;;;;;;;;;;;8652:9;8637:24;8629:33;;;;;;8689:14;;;;;;;;;;;8681:22;;:4;:22;;;:56;;;;;8721:15;;;;;;;;;;;8707:30;;:2;:30;;;;8681:56;:84;;;;;8743:18;:22;8762:2;8743:22;;;;;;;;;;;;;;;;;;;;;;;;;8741:24;8681:84;8677:761;;;8809:11;;;;;;;;;;;8801:20;;;;;;8858:12;;8848:6;:22;;8840:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8952:15;8934:11;:15;8946:2;8934:15;;;;;;;;;;;;;;;;:33;8926:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9044:9;9025:15;:29;;;;:::i;:::-;9006:12;:16;9019:2;9006:16;;;;;;;;;;;;;;;:48;;;;9098:9;9079:15;:29;;;;:::i;:::-;9061:11;:15;9073:2;9061:15;;;;;;;;;;;;;;;:47;;;;9121:20;9144:10;:8;:10::i;:::-;9121:33;;9180:9;;9165:12;:24;9161:271;;;9255:2;9234:10;;:24;;;;;;;;;;;;;;;;;;9278:12;9266:9;:24;;;;9315:63;9332:45;9371:5;9332:34;9349:16;;9332:12;:16;;:34;;;;:::i;:::-;:38;;:45;;;;:::i;:::-;9315:12;:16;;:63;;;;:::i;:::-;9298:14;:80;;;;9391:33;9402:9;;9413:10;;;;;;;;;;;9391:33;;;;;;;:::i;:::-;;;;;;;;9161:271;8767:671;8677:761;9469:10;;;;;;;;;;;9461:18;;:4;:18;;;9457:235;;;9609:1;9597:9;:13;;;;9638:1;9617:10;;:23;;;;;;;;;;;;;;;;;;9652:33;9663:9;;9674:10;;;;;;;;;;;9652:33;;;;;;;:::i;:::-;;;;;;;;9457:235;9720:28;9751:24;9769:4;9751:9;:24::i;:::-;9720:55;;9795:6;;;;;;;;;;;9794:7;:33;;;;;9813:14;;;;;;;;;;;9805:22;;:4;:22;;;;9794:33;:48;;;;;9831:11;;;;;;;;;;;9794:48;9790:765;;;9892:15;9871:12;:18;9884:4;9871:18;;;;;;;;;;;;;;;;:36;9863:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;10021:20;10044:10;:8;:10::i;:::-;10021:33;;10092:14;;10077:12;:29;10073:190;;;10147:1;10135:9;:13;;;;10196:1;10175:10;;:23;;;;;;;;;;;;;;;;;;10242:1;10225:14;:18;;;;10073:190;10281:38;10298:20;10281:16;:38::i;:::-;10338:26;10367:21;10338:50;;10431:1;10410:18;:22;:50;;;;;10458:1;10436:24;;:10;;;;;;;;;;;:24;;;;10410:50;10407:133;;;10485:35;10498:21;10485:12;:35::i;:::-;10407:133;9844:711;;9790:765;8614:1954;8576:1992;10578:30;10593:4;10598:2;10601:6;10578:14;:30::i;:::-;8267:2349;;;:::o;1230:190::-;1316:7;1349:1;1344;:6;;1352:12;1336:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1376:9;1392:1;1388;:5;;;;:::i;:::-;1376:17;;1411:1;1404:8;;;1230:190;;;;;:::o;11123:144::-;11180:10;;;;;;;;;;;:19;;:34;11200:13;11211:1;11200:6;:10;;:13;;;;:::i;:::-;11180:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11225:10;;;;;;;;;;;:19;;:34;11245:13;11256:1;11245:6;:10;;:13;;;;:::i;:::-;11225:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11123:144;:::o;7574:254::-;7641:7;7680;;7669;:18;;7661:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7745:19;7768:10;:8;:10::i;:::-;7745:33;;7796:24;7808:11;7796:7;:11;;:24;;;;:::i;:::-;7789:31;;;7574:254;;;:::o;1428:246::-;1486:7;1515:1;1510;:6;1506:47;;;1540:1;1533:8;;;;1506:47;1563:9;1579:1;1575;:5;;;;:::i;:::-;1563:17;;1608:1;1603;1599;:5;;;;:::i;:::-;:10;1591:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1665:1;1658:8;;;1428:246;;;;;:::o;1682:132::-;1740:7;1767:39;1771:1;1774;1767:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1760:46;;1682:132;;;;:::o;10624:483::-;5204:4;5195:6;;:13;;;;;;;;;;;;;;;;;;10702:21:::1;10740:1;10726:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10702:40;;10771:4;10753;10758:1;10753:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10797:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10787:4;10792:1;10787:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10830:62;10847:4;10862:15;;;;;;;;;;;10880:11;10830:8;:62::i;:::-;10903:15;;;;;;;;;;;:66;;;10984:11;11010:1;11026:4;11053;11073:15;10903:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10691:416;5240:5:::0;5231:6;;:14;;;;;;;;;;;;;;;;;;10624:483;:::o;1086:136::-;1144:7;1171:43;1175:1;1178;1171:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1164:50;;1086:136;;;;:::o;12828:146::-;12922:44;12940:6;12948:9;12959:6;12922:17;:44::i;:::-;12828:146;;;:::o;15938:163::-;15979:7;16000:15;16017;16036:19;:17;:19::i;:::-;15999:56;;;;16073:20;16085:7;16073;:11;;:20;;;;:::i;:::-;16066:27;;;;15938:163;:::o;1822:189::-;1908:7;1940:1;1936;:5;1943:12;1928:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1967:9;1983:1;1979;:5;;;;:::i;:::-;1967:17;;2002:1;1995:8;;;1822:189;;;;;:::o;12982:488::-;13081:15;13098:23;13123:12;13137:23;13162:12;13176:13;13193:19;13204:7;13193:10;:19::i;:::-;13080:132;;;;;;;;;;;;13241:28;13261:7;13241;:15;13249:6;13241:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13223:7;:15;13231:6;13223:15;;;;;;;;;;;;;;;:46;;;;13301:39;13324:15;13301:7;:18;13309:9;13301:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13280:7;:18;13288:9;13280:18;;;;;;;;;;;;;;;:60;;;;13352:16;13362:5;13352:9;:16::i;:::-;13379:23;13391:4;13397;13379:11;:23::i;:::-;13435:9;13418:44;;13427:6;13418:44;;;13446:15;13418:44;;;;;;:::i;:::-;;;;;;;;13069:401;;;;;;12982:488;;;:::o;16109:262::-;16159:7;16168;16188:15;16206:7;;16188:25;;16224:15;4221:16;16224:25;;16280:20;4221:16;16280:7;;:11;;:20;;;;:::i;:::-;16270:7;:30;16266:61;;;16310:7;;4221:16;16302:25;;;;;;;;16266:61;16346:7;16355;16338:25;;;;;;16109:262;;;:::o;14690:467::-;14749:7;14758;14767;14776;14785;14794;14815:23;14840:12;14854:13;14871:38;14883:7;14892;;;;;;;;;;;14871:38;;14901:7;;;;;;;;;;;14871:38;;:11;:38::i;:::-;14814:95;;;;;;14920:19;14943:10;:8;:10::i;:::-;14920:33;;14965:15;14982:23;15007:12;15023:46;15035:7;15044:4;15050:5;15057:11;15023;:46::i;:::-;14964:105;;;;;;15088:7;15097:15;15114:4;15120:15;15137:4;15143:5;15080:69;;;;;;;;;;;;;;;;;;;14690:467;;;;;;;:::o;899:179::-;957:7;977:9;993:1;989;:5;;;;:::i;:::-;977:17;;1018:1;1013;:6;;1005:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1069:1;1062:8;;;899:179;;;;:::o;13478:212::-;13531:19;13554:10;:8;:10::i;:::-;13531:33;;13575:13;13591:22;13601:11;13591:5;:9;;:22;;;;:::i;:::-;13575:38;;13649:33;13676:5;13649:7;:22;13665:4;13649:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13624:7;:22;13640:4;13624:22;;;;;;;;;;;;;;;:58;;;;13520:170;;13478:212;:::o;13698:147::-;13776:17;13788:4;13776:7;;:11;;:17;;;;:::i;:::-;13766:7;:27;;;;13817:20;13832:4;13817:10;;:14;;:20;;;;:::i;:::-;13804:10;:33;;;;13698:147;;:::o;15165:351::-;15258:7;15267;15276;15296:12;15311:28;15335:3;15311:19;15323:6;15311:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15296:43;;15350:13;15366:29;15391:3;15366:20;15378:7;15366;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;15350:45;;15406:23;15432:28;15454:5;15432:17;15444:4;15432:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15406:54;;15479:15;15496:4;15502:5;15471:37;;;;;;;;;15165:351;;;;;;;:::o;15524:409::-;15634:7;15643;15652;15672:15;15690:24;15702:11;15690:7;:11;;:24;;;;:::i;:::-;15672:42;;15725:12;15740:21;15749:11;15740:4;:8;;:21;;;;:::i;:::-;15725:36;;15772:13;15788:22;15798:11;15788:5;:9;;:22;;;;:::i;:::-;15772:38;;15821:23;15847:28;15869:5;15847:17;15859:4;15847:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15821:54;;15894:7;15903:15;15920:4;15886:39;;;;;;;;;;15524:409;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;404:79;;:::i;:::-;350:2;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;;;;;;:::o;752:139::-;798:5;836:6;823:20;814:29;;852:33;879:5;852:33;:::i;:::-;804:87;;;;:::o;897:143::-;954:5;985:6;979:13;970:22;;1001:33;1028:5;1001:33;:::i;:::-;960:80;;;;:::o;1063:370::-;1134:5;1183:3;1176:4;1168:6;1164:17;1160:27;1150:2;;1191:79;;:::i;:::-;1150:2;1308:6;1295:20;1333:94;1423:3;1415:6;1408:4;1400:6;1396:17;1333:94;:::i;:::-;1324:103;;1140:293;;;;;:::o;1439:137::-;1493:5;1524:6;1518:13;1509:22;;1540:30;1564:5;1540:30;:::i;:::-;1499:77;;;;:::o;1582:143::-;1639:5;1670:6;1664:13;1655:22;;1686:33;1713:5;1686:33;:::i;:::-;1645:80;;;;:::o;1731:139::-;1777:5;1815:6;1802:20;1793:29;;1831:33;1858:5;1831:33;:::i;:::-;1783:87;;;;:::o;1876:143::-;1933:5;1964:6;1958:13;1949:22;;1980:33;2007:5;1980:33;:::i;:::-;1939:80;;;;:::o;2025:141::-;2081:5;2112:6;2106:13;2097:22;;2128:32;2154:5;2128:32;:::i;:::-;2087:79;;;;:::o;2172:329::-;2231:6;2280:2;2268:9;2259:7;2255:23;2251:32;2248:2;;;2286:79;;:::i;:::-;2248:2;2406:1;2431:53;2476:7;2467:6;2456:9;2452:22;2431:53;:::i;:::-;2421:63;;2377:117;2238:263;;;;:::o;2507:351::-;2577:6;2626:2;2614:9;2605:7;2601:23;2597:32;2594:2;;;2632:79;;:::i;:::-;2594:2;2752:1;2777:64;2833:7;2824:6;2813:9;2809:22;2777:64;:::i;:::-;2767:74;;2723:128;2584:274;;;;:::o;2864:474::-;2932:6;2940;2989:2;2977:9;2968:7;2964:23;2960:32;2957:2;;;2995:79;;:::i;:::-;2957:2;3115:1;3140:53;3185:7;3176:6;3165:9;3161:22;3140:53;:::i;:::-;3130:63;;3086:117;3242:2;3268:53;3313:7;3304:6;3293:9;3289:22;3268:53;:::i;:::-;3258:63;;3213:118;2947:391;;;;;:::o;3344:619::-;3421:6;3429;3437;3486:2;3474:9;3465:7;3461:23;3457:32;3454:2;;;3492:79;;:::i;:::-;3454:2;3612:1;3637:53;3682:7;3673:6;3662:9;3658:22;3637:53;:::i;:::-;3627:63;;3583:117;3739:2;3765:53;3810:7;3801:6;3790:9;3786:22;3765:53;:::i;:::-;3755:63;;3710:118;3867:2;3893:53;3938:7;3929:6;3918:9;3914:22;3893:53;:::i;:::-;3883:63;;3838:118;3444:519;;;;;:::o;3969:474::-;4037:6;4045;4094:2;4082:9;4073:7;4069:23;4065:32;4062:2;;;4100:79;;:::i;:::-;4062:2;4220:1;4245:53;4290:7;4281:6;4270:9;4266:22;4245:53;:::i;:::-;4235:63;;4191:117;4347:2;4373:53;4418:7;4409:6;4398:9;4394:22;4373:53;:::i;:::-;4363:63;;4318:118;4052:391;;;;;:::o;4449:539::-;4533:6;4582:2;4570:9;4561:7;4557:23;4553:32;4550:2;;;4588:79;;:::i;:::-;4550:2;4736:1;4725:9;4721:17;4708:31;4766:18;4758:6;4755:30;4752:2;;;4788:79;;:::i;:::-;4752:2;4893:78;4963:7;4954:6;4943:9;4939:22;4893:78;:::i;:::-;4883:88;;4679:302;4540:448;;;;:::o;4994:345::-;5061:6;5110:2;5098:9;5089:7;5085:23;5081:32;5078:2;;;5116:79;;:::i;:::-;5078:2;5236:1;5261:61;5314:7;5305:6;5294:9;5290:22;5261:61;:::i;:::-;5251:71;;5207:125;5068:271;;;;:::o;5345:661::-;5432:6;5440;5448;5497:2;5485:9;5476:7;5472:23;5468:32;5465:2;;;5503:79;;:::i;:::-;5465:2;5623:1;5648:64;5704:7;5695:6;5684:9;5680:22;5648:64;:::i;:::-;5638:74;;5594:128;5761:2;5787:64;5843:7;5834:6;5823:9;5819:22;5787:64;:::i;:::-;5777:74;;5732:129;5900:2;5926:63;5981:7;5972:6;5961:9;5957:22;5926:63;:::i;:::-;5916:73;;5871:128;5455:551;;;;;:::o;6012:329::-;6071:6;6120:2;6108:9;6099:7;6095:23;6091:32;6088:2;;;6126:79;;:::i;:::-;6088:2;6246:1;6271:53;6316:7;6307:6;6296:9;6292:22;6271:53;:::i;:::-;6261:63;;6217:117;6078:263;;;;:::o;6347:663::-;6435:6;6443;6451;6500:2;6488:9;6479:7;6475:23;6471:32;6468:2;;;6506:79;;:::i;:::-;6468:2;6626:1;6651:64;6707:7;6698:6;6687:9;6683:22;6651:64;:::i;:::-;6641:74;;6597:128;6764:2;6790:64;6846:7;6837:6;6826:9;6822:22;6790:64;:::i;:::-;6780:74;;6735:129;6903:2;6929:64;6985:7;6976:6;6965:9;6961:22;6929:64;:::i;:::-;6919:74;;6874:129;6458:552;;;;;:::o;7016:179::-;7085:10;7106:46;7148:3;7140:6;7106:46;:::i;:::-;7184:4;7179:3;7175:14;7161:28;;7096:99;;;;:::o;7201:147::-;7296:45;7335:5;7296:45;:::i;:::-;7291:3;7284:58;7274:74;;:::o;7354:108::-;7431:24;7449:5;7431:24;:::i;:::-;7426:3;7419:37;7409:53;;:::o;7468:118::-;7555:24;7573:5;7555:24;:::i;:::-;7550:3;7543:37;7533:53;;:::o;7622:732::-;7741:3;7770:54;7818:5;7770:54;:::i;:::-;7840:86;7919:6;7914:3;7840:86;:::i;:::-;7833:93;;7950:56;8000:5;7950:56;:::i;:::-;8029:7;8060:1;8045:284;8070:6;8067:1;8064:13;8045:284;;;8146:6;8140:13;8173:63;8232:3;8217:13;8173:63;:::i;:::-;8166:70;;8259:60;8312:6;8259:60;:::i;:::-;8249:70;;8105:224;8092:1;8089;8085:9;8080:14;;8045:284;;;8049:14;8345:3;8338:10;;7746:608;;;;;;;:::o;8360:109::-;8441:21;8456:5;8441:21;:::i;:::-;8436:3;8429:34;8419:50;;:::o;8475:147::-;8570:45;8609:5;8570:45;:::i;:::-;8565:3;8558:58;8548:74;;:::o;8628:364::-;8716:3;8744:39;8777:5;8744:39;:::i;:::-;8799:71;8863:6;8858:3;8799:71;:::i;:::-;8792:78;;8879:52;8924:6;8919:3;8912:4;8905:5;8901:16;8879:52;:::i;:::-;8956:29;8978:6;8956:29;:::i;:::-;8951:3;8947:39;8940:46;;8720:272;;;;;:::o;8998:366::-;9140:3;9161:67;9225:2;9220:3;9161:67;:::i;:::-;9154:74;;9237:93;9326:3;9237:93;:::i;:::-;9355:2;9350:3;9346:12;9339:19;;9144:220;;;:::o;9370:366::-;9512:3;9533:67;9597:2;9592:3;9533:67;:::i;:::-;9526:74;;9609:93;9698:3;9609:93;:::i;:::-;9727:2;9722:3;9718:12;9711:19;;9516:220;;;:::o;9742:366::-;9884:3;9905:67;9969:2;9964:3;9905:67;:::i;:::-;9898:74;;9981:93;10070:3;9981:93;:::i;:::-;10099:2;10094:3;10090:12;10083:19;;9888:220;;;:::o;10114:366::-;10256:3;10277:67;10341:2;10336:3;10277:67;:::i;:::-;10270:74;;10353:93;10442:3;10353:93;:::i;:::-;10471:2;10466:3;10462:12;10455:19;;10260:220;;;:::o;10486:366::-;10628:3;10649:67;10713:2;10708:3;10649:67;:::i;:::-;10642:74;;10725:93;10814:3;10725:93;:::i;:::-;10843:2;10838:3;10834:12;10827:19;;10632:220;;;:::o;10858:366::-;11000:3;11021:67;11085:2;11080:3;11021:67;:::i;:::-;11014:74;;11097:93;11186:3;11097:93;:::i;:::-;11215:2;11210:3;11206:12;11199:19;;11004:220;;;:::o;11230:366::-;11372:3;11393:67;11457:2;11452:3;11393:67;:::i;:::-;11386:74;;11469:93;11558:3;11469:93;:::i;:::-;11587:2;11582:3;11578:12;11571:19;;11376:220;;;:::o;11602:366::-;11744:3;11765:67;11829:2;11824:3;11765:67;:::i;:::-;11758:74;;11841:93;11930:3;11841:93;:::i;:::-;11959:2;11954:3;11950:12;11943:19;;11748:220;;;:::o;11974:366::-;12116:3;12137:67;12201:2;12196:3;12137:67;:::i;:::-;12130:74;;12213:93;12302:3;12213:93;:::i;:::-;12331:2;12326:3;12322:12;12315:19;;12120:220;;;:::o;12346:366::-;12488:3;12509:67;12573:2;12568:3;12509:67;:::i;:::-;12502:74;;12585:93;12674:3;12585:93;:::i;:::-;12703:2;12698:3;12694:12;12687:19;;12492:220;;;:::o;12718:366::-;12860:3;12881:67;12945:2;12940:3;12881:67;:::i;:::-;12874:74;;12957:93;13046:3;12957:93;:::i;:::-;13075:2;13070:3;13066:12;13059:19;;12864:220;;;:::o;13090:366::-;13232:3;13253:67;13317:2;13312:3;13253:67;:::i;:::-;13246:74;;13329:93;13418:3;13329:93;:::i;:::-;13447:2;13442:3;13438:12;13431:19;;13236:220;;;:::o;13462:366::-;13604:3;13625:67;13689:2;13684:3;13625:67;:::i;:::-;13618:74;;13701:93;13790:3;13701:93;:::i;:::-;13819:2;13814:3;13810:12;13803:19;;13608:220;;;:::o;13834:366::-;13976:3;13997:67;14061:2;14056:3;13997:67;:::i;:::-;13990:74;;14073:93;14162:3;14073:93;:::i;:::-;14191:2;14186:3;14182:12;14175:19;;13980:220;;;:::o;14206:366::-;14348:3;14369:67;14433:2;14428:3;14369:67;:::i;:::-;14362:74;;14445:93;14534:3;14445:93;:::i;:::-;14563:2;14558:3;14554:12;14547:19;;14352:220;;;:::o;14578:366::-;14720:3;14741:67;14805:2;14800:3;14741:67;:::i;:::-;14734:74;;14817:93;14906:3;14817:93;:::i;:::-;14935:2;14930:3;14926:12;14919:19;;14724:220;;;:::o;14950:118::-;15037:24;15055:5;15037:24;:::i;:::-;15032:3;15025:37;15015:53;;:::o;15074:112::-;15157:22;15173:5;15157:22;:::i;:::-;15152:3;15145:35;15135:51;;:::o;15192:222::-;15285:4;15323:2;15312:9;15308:18;15300:26;;15336:71;15404:1;15393:9;15389:17;15380:6;15336:71;:::i;:::-;15290:124;;;;:::o;15420:332::-;15541:4;15579:2;15568:9;15564:18;15556:26;;15592:71;15660:1;15649:9;15645:17;15636:6;15592:71;:::i;:::-;15673:72;15741:2;15730:9;15726:18;15717:6;15673:72;:::i;:::-;15546:206;;;;;:::o;15758:332::-;15879:4;15917:2;15906:9;15902:18;15894:26;;15930:71;15998:1;15987:9;15983:17;15974:6;15930:71;:::i;:::-;16011:72;16079:2;16068:9;16064:18;16055:6;16011:72;:::i;:::-;15884:206;;;;;:::o;16096:807::-;16345:4;16383:3;16372:9;16368:19;16360:27;;16397:71;16465:1;16454:9;16450:17;16441:6;16397:71;:::i;:::-;16478:72;16546:2;16535:9;16531:18;16522:6;16478:72;:::i;:::-;16560:80;16636:2;16625:9;16621:18;16612:6;16560:80;:::i;:::-;16650;16726:2;16715:9;16711:18;16702:6;16650:80;:::i;:::-;16740:73;16808:3;16797:9;16793:19;16784:6;16740:73;:::i;:::-;16823;16891:3;16880:9;16876:19;16867:6;16823:73;:::i;:::-;16350:553;;;;;;;;;:::o;16909:210::-;16996:4;17034:2;17023:9;17019:18;17011:26;;17047:65;17109:1;17098:9;17094:17;17085:6;17047:65;:::i;:::-;17001:118;;;;:::o;17125:313::-;17238:4;17276:2;17265:9;17261:18;17253:26;;17325:9;17319:4;17315:20;17311:1;17300:9;17296:17;17289:47;17353:78;17426:4;17417:6;17353:78;:::i;:::-;17345:86;;17243:195;;;;:::o;17444:419::-;17610:4;17648:2;17637:9;17633:18;17625:26;;17697:9;17691:4;17687:20;17683:1;17672:9;17668:17;17661:47;17725:131;17851:4;17725:131;:::i;:::-;17717:139;;17615:248;;;:::o;17869:419::-;18035:4;18073:2;18062:9;18058:18;18050:26;;18122:9;18116:4;18112:20;18108:1;18097:9;18093:17;18086:47;18150:131;18276:4;18150:131;:::i;:::-;18142:139;;18040:248;;;:::o;18294:419::-;18460:4;18498:2;18487:9;18483:18;18475:26;;18547:9;18541:4;18537:20;18533:1;18522:9;18518:17;18511:47;18575:131;18701:4;18575:131;:::i;:::-;18567:139;;18465:248;;;:::o;18719:419::-;18885:4;18923:2;18912:9;18908:18;18900:26;;18972:9;18966:4;18962:20;18958:1;18947:9;18943:17;18936:47;19000:131;19126:4;19000:131;:::i;:::-;18992:139;;18890:248;;;:::o;19144:419::-;19310:4;19348:2;19337:9;19333:18;19325:26;;19397:9;19391:4;19387:20;19383:1;19372:9;19368:17;19361:47;19425:131;19551:4;19425:131;:::i;:::-;19417:139;;19315:248;;;:::o;19569:419::-;19735:4;19773:2;19762:9;19758:18;19750:26;;19822:9;19816:4;19812:20;19808:1;19797:9;19793:17;19786:47;19850:131;19976:4;19850:131;:::i;:::-;19842:139;;19740:248;;;:::o;19994:419::-;20160:4;20198:2;20187:9;20183:18;20175:26;;20247:9;20241:4;20237:20;20233:1;20222:9;20218:17;20211:47;20275:131;20401:4;20275:131;:::i;:::-;20267:139;;20165:248;;;:::o;20419:419::-;20585:4;20623:2;20612:9;20608:18;20600:26;;20672:9;20666:4;20662:20;20658:1;20647:9;20643:17;20636:47;20700:131;20826:4;20700:131;:::i;:::-;20692:139;;20590:248;;;:::o;20844:419::-;21010:4;21048:2;21037:9;21033:18;21025:26;;21097:9;21091:4;21087:20;21083:1;21072:9;21068:17;21061:47;21125:131;21251:4;21125:131;:::i;:::-;21117:139;;21015:248;;;:::o;21269:419::-;21435:4;21473:2;21462:9;21458:18;21450:26;;21522:9;21516:4;21512:20;21508:1;21497:9;21493:17;21486:47;21550:131;21676:4;21550:131;:::i;:::-;21542:139;;21440:248;;;:::o;21694:419::-;21860:4;21898:2;21887:9;21883:18;21875:26;;21947:9;21941:4;21937:20;21933:1;21922:9;21918:17;21911:47;21975:131;22101:4;21975:131;:::i;:::-;21967:139;;21865:248;;;:::o;22119:419::-;22285:4;22323:2;22312:9;22308:18;22300:26;;22372:9;22366:4;22362:20;22358:1;22347:9;22343:17;22336:47;22400:131;22526:4;22400:131;:::i;:::-;22392:139;;22290:248;;;:::o;22544:419::-;22710:4;22748:2;22737:9;22733:18;22725:26;;22797:9;22791:4;22787:20;22783:1;22772:9;22768:17;22761:47;22825:131;22951:4;22825:131;:::i;:::-;22817:139;;22715:248;;;:::o;22969:419::-;23135:4;23173:2;23162:9;23158:18;23150:26;;23222:9;23216:4;23212:20;23208:1;23197:9;23193:17;23186:47;23250:131;23376:4;23250:131;:::i;:::-;23242:139;;23140:248;;;:::o;23394:419::-;23560:4;23598:2;23587:9;23583:18;23575:26;;23647:9;23641:4;23637:20;23633:1;23622:9;23618:17;23611:47;23675:131;23801:4;23675:131;:::i;:::-;23667:139;;23565:248;;;:::o;23819:419::-;23985:4;24023:2;24012:9;24008:18;24000:26;;24072:9;24066:4;24062:20;24058:1;24047:9;24043:17;24036:47;24100:131;24226:4;24100:131;:::i;:::-;24092:139;;23990:248;;;:::o;24244:222::-;24337:4;24375:2;24364:9;24360:18;24352:26;;24388:71;24456:1;24445:9;24441:17;24432:6;24388:71;:::i;:::-;24342:124;;;;:::o;24472:348::-;24601:4;24639:2;24628:9;24624:18;24616:26;;24652:71;24720:1;24709:9;24705:17;24696:6;24652:71;:::i;:::-;24733:80;24809:2;24798:9;24794:18;24785:6;24733:80;:::i;:::-;24606:214;;;;;:::o;24826:831::-;25089:4;25127:3;25116:9;25112:19;25104:27;;25141:71;25209:1;25198:9;25194:17;25185:6;25141:71;:::i;:::-;25222:80;25298:2;25287:9;25283:18;25274:6;25222:80;:::i;:::-;25349:9;25343:4;25339:20;25334:2;25323:9;25319:18;25312:48;25377:108;25480:4;25471:6;25377:108;:::i;:::-;25369:116;;25495:72;25563:2;25552:9;25548:18;25539:6;25495:72;:::i;:::-;25577:73;25645:3;25634:9;25630:19;25621:6;25577:73;:::i;:::-;25094:563;;;;;;;;:::o;25663:214::-;25752:4;25790:2;25779:9;25775:18;25767:26;;25803:67;25867:1;25856:9;25852:17;25843:6;25803:67;:::i;:::-;25757:120;;;;:::o;25883:129::-;25917:6;25944:20;;:::i;:::-;25934:30;;25973:33;26001:4;25993:6;25973:33;:::i;:::-;25924:88;;;:::o;26018:75::-;26051:6;26084:2;26078:9;26068:19;;26058:35;:::o;26099:311::-;26176:4;26266:18;26258:6;26255:30;26252:2;;;26288:18;;:::i;:::-;26252:2;26338:4;26330:6;26326:17;26318:25;;26398:4;26392;26388:15;26380:23;;26181:229;;;:::o;26416:132::-;26483:4;26506:3;26498:11;;26536:4;26531:3;26527:14;26519:22;;26488:60;;;:::o;26554:114::-;26621:6;26655:5;26649:12;26639:22;;26628:40;;;:::o;26674:99::-;26726:6;26760:5;26754:12;26744:22;;26733:40;;;:::o;26779:113::-;26849:4;26881;26876:3;26872:14;26864:22;;26854:38;;;:::o;26898:184::-;26997:11;27031:6;27026:3;27019:19;27071:4;27066:3;27062:14;27047:29;;27009:73;;;;:::o;27088:169::-;27172:11;27206:6;27201:3;27194:19;27246:4;27241:3;27237:14;27222:29;;27184:73;;;;:::o;27263:305::-;27303:3;27322:20;27340:1;27322:20;:::i;:::-;27317:25;;27356:20;27374:1;27356:20;:::i;:::-;27351:25;;27510:1;27442:66;27438:74;27435:1;27432:81;27429:2;;;27516:18;;:::i;:::-;27429:2;27560:1;27557;27553:9;27546:16;;27307:261;;;;:::o;27574:185::-;27614:1;27631:20;27649:1;27631:20;:::i;:::-;27626:25;;27665:20;27683:1;27665:20;:::i;:::-;27660:25;;27704:1;27694:2;;27709:18;;:::i;:::-;27694:2;27751:1;27748;27744:9;27739:14;;27616:143;;;;:::o;27765:348::-;27805:7;27828:20;27846:1;27828:20;:::i;:::-;27823:25;;27862:20;27880:1;27862:20;:::i;:::-;27857:25;;28050:1;27982:66;27978:74;27975:1;27972:81;27967:1;27960:9;27953:17;27949:105;27946:2;;;28057:18;;:::i;:::-;27946:2;28105:1;28102;28098:9;28087:20;;27813:300;;;;:::o;28119:191::-;28159:4;28179:20;28197:1;28179:20;:::i;:::-;28174:25;;28213:20;28231:1;28213:20;:::i;:::-;28208:25;;28252:1;28249;28246:8;28243:2;;;28257:18;;:::i;:::-;28243:2;28302:1;28299;28295:9;28287:17;;28164:146;;;;:::o;28316:96::-;28353:7;28382:24;28400:5;28382:24;:::i;:::-;28371:35;;28361:51;;;:::o;28418:90::-;28452:7;28495:5;28488:13;28481:21;28470:32;;28460:48;;;:::o;28514:114::-;28551:7;28591:30;28584:5;28580:42;28569:53;;28559:69;;;:::o;28634:126::-;28671:7;28711:42;28704:5;28700:54;28689:65;;28679:81;;;:::o;28766:77::-;28803:7;28832:5;28821:16;;28811:32;;;:::o;28849:93::-;28885:7;28925:10;28918:5;28914:22;28903:33;;28893:49;;;:::o;28948:86::-;28983:7;29023:4;29016:5;29012:16;29001:27;;28991:43;;;:::o;29040:134::-;29098:9;29131:37;29162:5;29131:37;:::i;:::-;29118:50;;29108:66;;;:::o;29180:121::-;29238:9;29271:24;29289:5;29271:24;:::i;:::-;29258:37;;29248:53;;;:::o;29307:126::-;29357:9;29390:37;29421:5;29390:37;:::i;:::-;29377:50;;29367:66;;;:::o;29439:113::-;29489:9;29522:24;29540:5;29522:24;:::i;:::-;29509:37;;29499:53;;;:::o;29558:307::-;29626:1;29636:113;29650:6;29647:1;29644:13;29636:113;;;29735:1;29730:3;29726:11;29720:18;29716:1;29711:3;29707:11;29700:39;29672:2;29669:1;29665:10;29660:15;;29636:113;;;29767:6;29764:1;29761:13;29758:2;;;29847:1;29838:6;29833:3;29829:16;29822:27;29758:2;29607:258;;;;:::o;29871:281::-;29954:27;29976:4;29954:27;:::i;:::-;29946:6;29942:40;30084:6;30072:10;30069:22;30048:18;30036:10;30033:34;30030:62;30027:2;;;30095:18;;:::i;:::-;30027:2;30135:10;30131:2;30124:22;29914:238;;;:::o;30158:233::-;30197:3;30220:24;30238:5;30220:24;:::i;:::-;30211:33;;30266:66;30259:5;30256:77;30253:2;;;30336:18;;:::i;:::-;30253:2;30383:1;30376:5;30372:13;30365:20;;30201:190;;;:::o;30397:180::-;30445:77;30442:1;30435:88;30542:4;30539:1;30532:15;30566:4;30563:1;30556:15;30583:180;30631:77;30628:1;30621:88;30728:4;30725:1;30718:15;30752:4;30749:1;30742:15;30769:180;30817:77;30814:1;30807:88;30914:4;30911:1;30904:15;30938:4;30935:1;30928:15;30955:180;31003:77;31000:1;30993:88;31100:4;31097:1;31090:15;31124:4;31121:1;31114:15;31141:117;31250:1;31247;31240:12;31264:117;31373:1;31370;31363:12;31387:117;31496:1;31493;31486:12;31510:117;31619:1;31616;31609:12;31633:102;31674:6;31725:2;31721:7;31716:2;31709:5;31705:14;31701:28;31691:38;;31681:54;;;:::o;31741:222::-;31881:34;31877:1;31869:6;31865:14;31858:58;31950:5;31945:2;31937:6;31933:15;31926:30;31847:116;:::o;31969:182::-;32109:34;32105:1;32097:6;32093:14;32086:58;32075:76;:::o;32157:229::-;32297:34;32293:1;32285:6;32281:14;32274:58;32366:12;32361:2;32353:6;32349:15;32342:37;32263:123;:::o;32392:221::-;32532:34;32528:1;32520:6;32516:14;32509:58;32601:4;32596:2;32588:6;32584:15;32577:29;32498:115;:::o;32619:177::-;32759:29;32755:1;32747:6;32743:14;32736:53;32725:71;:::o;32802:179::-;32942:31;32938:1;32930:6;32926:14;32919:55;32908:73;:::o;32987:171::-;33127:23;33123:1;33115:6;33111:14;33104:47;33093:65;:::o;33164:170::-;33304:22;33300:1;33292:6;33288:14;33281:46;33270:64;:::o;33340:166::-;33480:18;33476:1;33468:6;33464:14;33457:42;33446:60;:::o;33512:220::-;33652:34;33648:1;33640:6;33636:14;33629:58;33721:3;33716:2;33708:6;33704:15;33697:28;33618:114;:::o;33738:182::-;33878:34;33874:1;33866:6;33862:14;33855:58;33844:76;:::o;33926:228::-;34066:34;34062:1;34054:6;34050:14;34043:58;34135:11;34130:2;34122:6;34118:15;34111:36;34032:122;:::o;34160:224::-;34300:34;34296:1;34288:6;34284:14;34277:58;34369:7;34364:2;34356:6;34352:15;34345:32;34266:118;:::o;34390:223::-;34530:34;34526:1;34518:6;34514:14;34507:58;34599:6;34594:2;34586:6;34582:15;34575:31;34496:117;:::o;34619:173::-;34759:25;34755:1;34747:6;34743:14;34736:49;34725:67;:::o;34798:168::-;34938:20;34934:1;34926:6;34922:14;34915:44;34904:62;:::o;34972:122::-;35045:24;35063:5;35045:24;:::i;:::-;35038:5;35035:35;35025:2;;35084:1;35081;35074:12;35025:2;35015:79;:::o;35100:116::-;35170:21;35185:5;35170:21;:::i;:::-;35163:5;35160:32;35150:2;;35206:1;35203;35196:12;35150:2;35140:76;:::o;35222:122::-;35295:24;35313:5;35295:24;:::i;:::-;35288:5;35285:35;35275:2;;35334:1;35331;35324:12;35275:2;35265:79;:::o;35350:122::-;35423:24;35441:5;35423:24;:::i;:::-;35416:5;35413:35;35403:2;;35462:1;35459;35452:12;35403:2;35393:79;:::o;35478:120::-;35550:23;35567:5;35550:23;:::i;:::-;35543:5;35540:34;35530:2;;35588:1;35585;35578:12;35530:2;35520:78;:::o

Swarm Source

ipfs://de5b8347861db0c3fc26b5547d7558b3763f4595312dcd1a0458dbd351609cfa
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.