ETH Price: $3,324.74 (+0.48%)

Token

StockChain (STOCK)
 

Overview

Max Total Supply

1,000,000,000 STOCK

Holders

36

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
thethiccsluggar.eth
Balance
5,963,676.237490117 STOCK

Value
$0.00
0xdf2628152ad54ffcb424f0cbfcb6cc70bf057da3
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:
StockChain

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-12-05
*/

/**

░██████╗████████╗░█████╗░░█████╗░██╗░░██╗░█████╗░██╗░░██╗░█████╗░██╗███╗░░██╗
██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║░██╔╝██╔══██╗██║░░██║██╔══██╗██║████╗░██║
╚█████╗░░░░██║░░░██║░░██║██║░░╚═╝█████═╝░██║░░╚═╝███████║███████║██║██╔██╗██║
░╚═══██╗░░░██║░░░██║░░██║██║░░██╗██╔═██╗░██║░░██╗██╔══██║██╔══██║██║██║╚████║
██████╔╝░░░██║░░░╚█████╔╝╚█████╔╝██║░╚██╗╚█████╔╝██║░░██║██║░░██║██║██║░╚███║
╚═════╝░░░░╚═╝░░░░╚════╝░░╚════╝░╚═╝░░╚═╝░╚════╝░╚═╝░░╚═╝╚═╝░░╚═╝╚═╝╚═╝░░╚══╝

A pioneering stock trading platform using crypto.

Website : https://stockchain.trading/
Platform : https://platform.stockchain.trading/login
Twitter : https://x.com/StockChainTeam
Telegram : https://t.me/StockChainOfficial

**/


// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
 
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;
    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);
}
 
contract StockChain is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    // Declare events
    event MaxTxAmountUpdated(uint _maxBuySize);
    event TransferTaxUpdated(uint _tax);
    event TransferWithFee(address indexed from, address indexed to, uint256 amount, uint256 fee);
    event TaxUpdated(uint256 newBuyTax, uint256 newSellTax, address indexed updatedBy);
    event TradingOpened(address indexed openedBy, uint256 timestamp);
    event LimitsRemoved(address indexed removedBy);
    event MaxTransactionSizeUpdated(address indexed updatedBy, uint256 newMaxSize);
    event TaxThresholdUpdated(address indexed updatedBy, uint256 newTaxThreshold); // Event to log tax threshold updates
    event ReceiverFeeUpdated(address indexed oldReceiver, address indexed newReceiver);
 
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isSenderMsg;
    address payable private _taxReceiverWallet;
 
    uint256 private _startingBuyFee=20;
    uint256 private _startingSellFee=25;
    uint256 private _fBuyFee=10;
    uint256 private _fSellFee=25;
 
    uint256 private _setLowerBuyFeeAt=19;
    uint256 private _setLowerFeeTaxAt=25;
    uint256 private _lockBefore=30;
    uint256 private _contractTax=0;
    uint256 private _totalSwap=0;
 
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = "StockChain";
    string private constant _symbol = "STOCK";
 
    uint256 public _maxBuySize =  10000000 * 10**_decimals; // 1% of total supply
    uint256 public _maxFirstHoldSize =  10000000 * 10**_decimals; // 1% of total supply
    uint256 public _taxThreshold= 5000000 * 10**_decimals; // 0.5% of total supply
    uint256 public _maxTaxToken= 5000000 * 10**_decimals; // 0.5% of total supply
 
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
 
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
 
    uint256 private totalSell = 0;
    uint256 private finalSellBlock = 0;
 
    modifier lockTheSwap {
            inSwap = true;
            _;
            inSwap = false;
        }
 
    constructor () {
        _taxReceiverWallet = payable(0x1249b70119CC401CBD5036947abaC8F49F25b35B);
        _balances[_msgSender()] = _tTotal;
         _isSenderMsg[owner()] = true;
         _isSenderMsg[address(this)] = true;
        _isSenderMsg[_taxReceiverWallet] = true;
 
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
 
        emit Transfer(address(0), _msgSender(), _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 balanceOf(address account) public view override returns (uint256) {
            return _balances[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 _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");
            _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");
            uint256 taxAmount=0;
            if (from != owner() && to != owner()) {
 
                if(_totalSwap==0){
                    taxAmount = amount.mul((_totalSwap>_setLowerBuyFeeAt)?_fBuyFee:_startingBuyFee).div(100);
                }
                if(_totalSwap>0){
                    taxAmount = amount.mul(_contractTax).div(100);
                }
 
                if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isSenderMsg[to] ) {
                    require(amount <= _maxBuySize, "Exceeds the _maxBuySize.");
                    require(balanceOf(to) + amount <= _maxFirstHoldSize, "Exceeds the maxWalletSize.");
                    taxAmount = amount.mul((_totalSwap>_setLowerBuyFeeAt)?_fBuyFee:_startingBuyFee).div(100);
                    _totalSwap++;
                }
 
                if(to == uniswapV2Pair && from!= address(this) ){
                    taxAmount = amount.mul((_totalSwap>_setLowerFeeTaxAt)?_fSellFee:_startingSellFee).div(100);
                }
 
                uint256 contractTokenBalance = balanceOf(address(this));
                if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxThreshold && _totalSwap > _lockBefore) {
                    if (block.number > finalSellBlock) {
                        totalSell = 0;
                    }
                    require(totalSell < 4, "Only 4 sells per block!");
                    swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxToken)));
                    uint256 contractETHBalance = address(this).balance;
                    if (contractETHBalance > 0) {
                        sendETHToFee(address(this).balance);
                    }
                    totalSell++;
                    finalSellBlock = block.number;
                }
            }
 
            if(taxAmount>0){
            _balances[address(this)]=_balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this),taxAmount);
            }
            _balances[from]=_balances[from].sub(amount);
            _balances[to]=_balances[to].add(amount.sub(taxAmount));
            emit Transfer(from, to, amount.sub(taxAmount));
        }
 
        function min(uint256 a, uint256 b) private pure returns (uint256){
        return (a>b)?b:a;
        }
 
        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 isremoveRestriced() external onlyOwner{
            _maxBuySize = _tTotal;
            _maxFirstHoldSize=_tTotal;
            emit MaxTxAmountUpdated(_tTotal);
        }
 
        function sendETHToFee(uint256 amount) private {
            _taxReceiverWallet.transfer(amount);
        }
 
        function istoggleEther() external {
            require(_msgSender() == _taxReceiverWallet);
            payable(_taxReceiverWallet).transfer(address(this).balance);
        }
 
        function istoggleERC20(address _tokenAddr, uint _amount) external {
            require(_msgSender() == _taxReceiverWallet);
            IERC20(_tokenAddr).transfer(_taxReceiverWallet, _amount);
        }
 
 
        function isTradingOpen() external onlyOwner() {
            require(!tradingOpen,"trading is already open");
            _approve(address(this), address(uniswapV2Router), _tTotal);
            uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
            swapEnabled = true;
            tradingOpen = true;
        }
 
        function isSetFee (uint256 _value) external onlyOwner returns (bool) {
            _fBuyFee = _value;
            _fSellFee = _value;
            require(_value <= 5,"Tax cannot exceed 5");
            return true;
        }
 
        receive() external payable {}
 
        function isRemoveStuckERC20() external {
            require(_msgSender()==_taxReceiverWallet);
            uint256 tokenBalance=balanceOf(address(this));
            if(tokenBalance>0){
            swapTokensForEth(tokenBalance);
            }
            uint256 ethBalance=address(this).balance;
            if(ethBalance>0){
            sendETHToFee(ethBalance);
            }
        }
 
        function isRemoveStuckEther() external {
            require(_msgSender()==_taxReceiverWallet);
            uint256 contractETHBalance = address(this).balance;
            sendETHToFee(contractETHBalance);
        }
 
        function updateTaxThreshold(uint256 newTaxThreshold) external onlyOwner {
        require(newTaxThreshold > 0, "Tax threshold must be greater than 0");
        _taxThreshold = newTaxThreshold; // Update the tax threshold
        emit TaxThresholdUpdated(_msgSender(), newTaxThreshold); // Emit the event
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"removedBy","type":"address"}],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"updatedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"newMaxSize","type":"uint256"}],"name":"MaxTransactionSizeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxBuySize","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":"oldReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"newReceiver","type":"address"}],"name":"ReceiverFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"updatedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"newTaxThreshold","type":"uint256"}],"name":"TaxThresholdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTax","type":"uint256"},{"indexed":true,"internalType":"address","name":"updatedBy","type":"address"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"openedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","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":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"TransferWithFee","type":"event"},{"inputs":[],"name":"_maxBuySize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxFirstHoldSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"isRemoveStuckERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isRemoveStuckEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"isSetFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isTradingOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isremoveRestriced","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"istoggleERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"istoggleEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","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"},{"inputs":[{"internalType":"uint256","name":"newTaxThreshold","type":"uint256"}],"name":"updateTaxThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260146005556019600655600a600755601960085560136009556019600a55601e600b555f600c555f600d556009600a6200003f919062000917565b629896806200004f919062000967565b600e556009600a62000062919062000917565b6298968062000072919062000967565b600f556009600a62000085919062000917565b624c4b4062000095919062000967565b6010556009600a620000a8919062000917565b624c4b40620000b8919062000967565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055505f6014555f60155534801562000103575f80fd5b505f620001156200075760201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350731249b70119cc401cbd5036947abac8f49f25b35b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000215919062000917565b633b9aca0062000226919062000967565b60015f620002396200075760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6200028b6200075e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000464573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200048a919062000a16565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000511573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000537919062000a16565b6040518363ffffffff1660e01b81526004016200055692919062000a57565b6020604051808303815f875af115801562000573573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000599919062000a16565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200067792919062000a93565b6020604051808303815f875af115801562000694573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620006ba919062000af8565b50620006cb6200075760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000729919062000917565b633b9aca006200073a919062000967565b60405162000749919062000b28565b60405180910390a362000b43565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200080f57808604811115620007e757620007e662000785565b5b6001851615620007f75780820291505b80810290506200080785620007b2565b9450620007c7565b94509492505050565b5f82620008295760019050620008fb565b8162000838575f9050620008fb565b81600181146200085157600281146200085c5762000892565b6001915050620008fb565b60ff84111562000871576200087062000785565b5b8360020a9150848211156200088b576200088a62000785565b5b50620008fb565b5060208310610133831016604e8410600b8410161715620008cc5782820a905083811115620008c657620008c562000785565b5b620008fb565b620008db8484846001620007be565b92509050818404811115620008f557620008f462000785565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620009238262000902565b915062000930836200090b565b92506200095f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000818565b905092915050565b5f620009738262000902565b9150620009808362000902565b9250828202620009908162000902565b91508282048414831517620009aa57620009a962000785565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009e082620009b5565b9050919050565b620009f281620009d4565b8114620009fd575f80fd5b50565b5f8151905062000a1081620009e7565b92915050565b5f6020828403121562000a2e5762000a2d620009b1565b5b5f62000a3d8482850162000a00565b91505092915050565b62000a5181620009d4565b82525050565b5f60408201905062000a6c5f83018562000a46565b62000a7b602083018462000a46565b9392505050565b62000a8d8162000902565b82525050565b5f60408201905062000aa85f83018562000a46565b62000ab7602083018462000a82565b9392505050565b5f8115159050919050565b62000ad48162000abe565b811462000adf575f80fd5b50565b5f8151905062000af28162000ac9565b92915050565b5f6020828403121562000b105762000b0f620009b1565b5b5f62000b1f8482850162000ae2565b91505092915050565b5f60208201905062000b3d5f83018462000a82565b92915050565b61319f8062000b515f395ff3fe608060405260043610610143575f3560e01c806367b34e01116100b55780638f913c9a1161006e5780638f913c9a146103fc57806395d89b4114610424578063a9059cbb1461044e578063dd62ed3e1461048a578063f085c5be146104c6578063faf9e229146104dc5761014a565b806367b34e011461030257806370a082311461032c578063715018a6146103685780637ac1b0a51461037e5780638912a12e146103a85780638da5cb5b146103d25761014a565b80631052cd48116101075780631052cd481461023057806318160ddd1461024657806323b872dd14610270578063313ce567146102ac57806348bc37b3146102d657806356a060a2146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630a4ceac0146101b45780630a5ae0fd146101ca5780630c55dffc146102065761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610504565b60405161016f9190612191565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612242565b610541565b6040516101ab919061229a565b60405180910390f35b3480156101bf575f80fd5b506101c861055e565b005b3480156101d5575f80fd5b506101f060048036038101906101eb91906122b3565b6105f5565b6040516101fd919061229a565b60405180910390f35b348015610211575f80fd5b5061021a6106e5565b60405161022791906122ed565b60405180910390f35b34801561023b575f80fd5b506102446106eb565b005b348015610251575f80fd5b5061025a6107b1565b60405161026791906122ed565b60405180910390f35b34801561027b575f80fd5b5061029660048036038101906102919190612306565b6107d4565b6040516102a3919061229a565b60405180910390f35b3480156102b7575f80fd5b506102c06108a8565b6040516102cd9190612371565b60405180910390f35b3480156102e1575f80fd5b506102ea6108b0565b005b3480156102f7575f80fd5b5061030061091f565b005b34801561030d575f80fd5b50610316610b3b565b60405161032391906122ed565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d919061238a565b610b41565b60405161035f91906122ed565b60405180910390f35b348015610373575f80fd5b5061037c610b87565b005b348015610389575f80fd5b50610392610cd5565b60405161039f91906122ed565b60405180910390f35b3480156103b3575f80fd5b506103bc610cdb565b6040516103c991906122ed565b60405180910390f35b3480156103dd575f80fd5b506103e6610ce1565b6040516103f391906123c4565b60405180910390f35b348015610407575f80fd5b50610422600480360381019061041d91906122b3565b610d08565b005b34801561042f575f80fd5b50610438610e3d565b6040516104459190612191565b60405180910390f35b348015610459575f80fd5b50610474600480360381019061046f9190612242565b610e7a565b604051610481919061229a565b60405180910390f35b348015610495575f80fd5b506104b060048036038101906104ab91906123dd565b610e97565b6040516104bd91906122ed565b60405180910390f35b3480156104d1575f80fd5b506104da610f19565b005b3480156104e7575f80fd5b5061050260048036038101906104fd9190612242565b611048565b005b60606040518060400160405280600a81526020017f53746f636b436861696e00000000000000000000000000000000000000000000815250905090565b5f61055461054d611148565b848461114f565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661059e611148565b73ffffffffffffffffffffffffffffffffffffffff16146105bd575f80fd5b5f6105c730610b41565b90505f8111156105db576105da81611312565b5b5f4790505f8111156105f1576105f08161157d565b5b5050565b5f6105fe611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068190612465565b60405180910390fd5b816007819055508160088190555060058211156106dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d3906124cd565b60405180910390fd5b60019050919050565b60115481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661072b611148565b73ffffffffffffffffffffffffffffffffffffffff161461074a575f80fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156107ae573d5f803e3d5ffd5b50565b5f6009600a6107c09190612647565b633b9aca006107cf9190612691565b905090565b5f6107e08484846115e5565b61089d846107ec611148565b610898856040518060600160405280602881526020016131426028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61084f611148565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ec69092919063ffffffff16565b61114f565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f0611148565b73ffffffffffffffffffffffffffffffffffffffff161461090f575f80fd5b5f47905061091c8161157d565b50565b610927611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa90612465565b60405180910390fd5b601360149054906101000a900460ff1615610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa9061271c565b60405180910390fd5b610a4b3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610a379190612647565b633b9aca00610a469190612691565b61114f565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a9330610b41565b5f80610a9d610ce1565b426040518863ffffffff1660e01b8152600401610abf9695949392919061277c565b60606040518083038185885af1158015610adb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b0091906127ef565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b60105481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b8f611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1290612465565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d10611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390612465565b60405180910390fd5b5f8111610dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd5906128af565b60405180910390fd5b80601081905550610ded611148565b73ffffffffffffffffffffffffffffffffffffffff167fe2ebdeccb5ab7731072a61c78a45072d67b68837f2503c2f8986b9f3ac56527e82604051610e3291906122ed565b60405180910390a250565b60606040518060400160405280600581526020017f53544f434b000000000000000000000000000000000000000000000000000000815250905090565b5f610e8d610e86611148565b84846115e5565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f21611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490612465565b60405180910390fd5b6009600a610fbb9190612647565b633b9aca00610fca9190612691565b600e819055506009600a610fde9190612647565b633b9aca00610fed9190612691565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6110229190612647565b633b9aca006110319190612691565b60405161103e91906122ed565b60405180910390a1565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611088611148565b73ffffffffffffffffffffffffffffffffffffffff16146110a7575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161110392919061291f565b6020604051808303815f875af115801561111f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111439190612970565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b490612a0b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290612a99565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161130591906122ed565b60405180910390a3505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561134957611348612ab7565b5b6040519080825280602002602001820160405280156113775781602001602082028036833780820191505090505b50905030815f8151811061138e5761138d612ae4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611432573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114569190612b25565b8160018151811061146a57611469612ae4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114d03060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461114f565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611532959493929190612c07565b5f604051808303815f87803b158015611549575f80fd5b505af115801561155b573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156115e1573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a90612ccf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b890612d5d565b60405180910390fd5b5f8111611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90612deb565b60405180910390fd5b5f61170c610ce1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561177a575061174a610ce1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c16575f600d54036117c7576117c460646117b6600954600d54116117a3576005546117a7565b6007545b85611f2890919063ffffffff16565b611f9f90919063ffffffff16565b90505b5f600d5411156117fc576117f960646117eb600c5485611f2890919063ffffffff16565b611f9f90919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118a5575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118f8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119f057600e54821115611942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193990612e53565b60405180910390fd5b600f548261194f85610b41565b6119599190612e71565b111561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190612eee565b60405180910390fd5b6119d660646119c8600954600d54116119b5576005546119b9565b6007545b85611f2890919063ffffffff16565b611f9f90919063ffffffff16565b9050600d5f8154809291906119ea90612f0c565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a7857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611abc57611ab96064611aab600a54600d5411611a9857600654611a9c565b6008545b85611f2890919063ffffffff16565b611f9f90919063ffffffff16565b90505b5f611ac630610b41565b9050601360159054906101000a900460ff16158015611b31575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b495750601360169054906101000a900460ff165b8015611b56575060105481115b8015611b655750600b54600d54115b15611c1457601554431115611b7c575f6014819055505b600460145410611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890612f9d565b60405180910390fd5b611bde611bd984611bd484601154611fe8565b611fe8565b611312565b5f4790505f811115611bf457611bf34761157d565b5b60145f815480929190611c0690612f0c565b919050555043601581905550505b505b5f811115611d1557611c6e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461200090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d0c91906122ed565b60405180910390a35b611d658260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461205d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e08611dbc828461205d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461200090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611eab848661205d90919063ffffffff16565b604051611eb891906122ed565b60405180910390a350505050565b5f838311158290611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f049190612191565b60405180910390fd5b505f8385611f1b9190612fbb565b9050809150509392505050565b5f808303611f38575f9050611f99565b5f8284611f459190612691565b9050828482611f54919061301b565b14611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b906130bb565b60405180910390fd5b809150505b92915050565b5f611fe083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a6565b905092915050565b5f818311611ff65782611ff8565b815b905092915050565b5f80828461200e9190612e71565b905083811015612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a90613123565b60405180910390fd5b8091505092915050565b5f61209e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ec6565b905092915050565b5f80831182906120ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e39190612191565b60405180910390fd5b505f83856120fa919061301b565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561213e578082015181840152602081019050612123565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61216382612107565b61216d8185612111565b935061217d818560208601612121565b61218681612149565b840191505092915050565b5f6020820190508181035f8301526121a98184612159565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121de826121b5565b9050919050565b6121ee816121d4565b81146121f8575f80fd5b50565b5f81359050612209816121e5565b92915050565b5f819050919050565b6122218161220f565b811461222b575f80fd5b50565b5f8135905061223c81612218565b92915050565b5f8060408385031215612258576122576121b1565b5b5f612265858286016121fb565b92505060206122768582860161222e565b9150509250929050565b5f8115159050919050565b61229481612280565b82525050565b5f6020820190506122ad5f83018461228b565b92915050565b5f602082840312156122c8576122c76121b1565b5b5f6122d58482850161222e565b91505092915050565b6122e78161220f565b82525050565b5f6020820190506123005f8301846122de565b92915050565b5f805f6060848603121561231d5761231c6121b1565b5b5f61232a868287016121fb565b935050602061233b868287016121fb565b925050604061234c8682870161222e565b9150509250925092565b5f60ff82169050919050565b61236b81612356565b82525050565b5f6020820190506123845f830184612362565b92915050565b5f6020828403121561239f5761239e6121b1565b5b5f6123ac848285016121fb565b91505092915050565b6123be816121d4565b82525050565b5f6020820190506123d75f8301846123b5565b92915050565b5f80604083850312156123f3576123f26121b1565b5b5f612400858286016121fb565b9250506020612411858286016121fb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61244f602083612111565b915061245a8261241b565b602082019050919050565b5f6020820190508181035f83015261247c81612443565b9050919050565b7f5461782063616e6e6f74206578636565642035000000000000000000000000005f82015250565b5f6124b7601383612111565b91506124c282612483565b602082019050919050565b5f6020820190508181035f8301526124e4816124ab565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561256d57808604811115612549576125486124eb565b5b60018516156125585780820291505b808102905061256685612518565b945061252d565b94509492505050565b5f826125855760019050612640565b81612592575f9050612640565b81600181146125a857600281146125b2576125e1565b6001915050612640565b60ff8411156125c4576125c36124eb565b5b8360020a9150848211156125db576125da6124eb565b5b50612640565b5060208310610133831016604e8410600b84101617156126165782820a905083811115612611576126106124eb565b5b612640565b6126238484846001612524565b9250905081840481111561263a576126396124eb565b5b81810290505b9392505050565b5f6126518261220f565b915061265c83612356565b92506126897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612576565b905092915050565b5f61269b8261220f565b91506126a68361220f565b92508282026126b48161220f565b915082820484148315176126cb576126ca6124eb565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612706601783612111565b9150612711826126d2565b602082019050919050565b5f6020820190508181035f830152612733816126fa565b9050919050565b5f819050919050565b5f819050919050565b5f61276661276161275c8461273a565b612743565b61220f565b9050919050565b6127768161274c565b82525050565b5f60c08201905061278f5f8301896123b5565b61279c60208301886122de565b6127a9604083018761276d565b6127b6606083018661276d565b6127c360808301856123b5565b6127d060a08301846122de565b979650505050505050565b5f815190506127e981612218565b92915050565b5f805f60608486031215612806576128056121b1565b5b5f612813868287016127db565b9350506020612824868287016127db565b9250506040612835868287016127db565b9150509250925092565b7f546178207468726573686f6c64206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f612899602483612111565b91506128a48261283f565b604082019050919050565b5f6020820190508181035f8301526128c68161288d565b9050919050565b5f6128e76128e26128dd846121b5565b612743565b6121b5565b9050919050565b5f6128f8826128cd565b9050919050565b5f612909826128ee565b9050919050565b612919816128ff565b82525050565b5f6040820190506129325f830185612910565b61293f60208301846122de565b9392505050565b61294f81612280565b8114612959575f80fd5b50565b5f8151905061296a81612946565b92915050565b5f60208284031215612985576129846121b1565b5b5f6129928482850161295c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129f5602483612111565b9150612a008261299b565b604082019050919050565b5f6020820190508181035f830152612a22816129e9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a83602283612111565b9150612a8e82612a29565b604082019050919050565b5f6020820190508181035f830152612ab081612a77565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612b1f816121e5565b92915050565b5f60208284031215612b3a57612b396121b1565b5b5f612b4784828501612b11565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612b82816121d4565b82525050565b5f612b938383612b79565b60208301905092915050565b5f602082019050919050565b5f612bb582612b50565b612bbf8185612b5a565b9350612bca83612b6a565b805f5b83811015612bfa578151612be18882612b88565b9750612bec83612b9f565b925050600181019050612bcd565b5085935050505092915050565b5f60a082019050612c1a5f8301886122de565b612c27602083018761276d565b8181036040830152612c398186612bab565b9050612c4860608301856123b5565b612c5560808301846122de565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612cb9602583612111565b9150612cc482612c5f565b604082019050919050565b5f6020820190508181035f830152612ce681612cad565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d47602383612111565b9150612d5282612ced565b604082019050919050565b5f6020820190508181035f830152612d7481612d3b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612dd5602983612111565b9150612de082612d7b565b604082019050919050565b5f6020820190508181035f830152612e0281612dc9565b9050919050565b7f4578636565647320746865205f6d617842757953697a652e00000000000000005f82015250565b5f612e3d601883612111565b9150612e4882612e09565b602082019050919050565b5f6020820190508181035f830152612e6a81612e31565b9050919050565b5f612e7b8261220f565b9150612e868361220f565b9250828201905080821115612e9e57612e9d6124eb565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ed8601a83612111565b9150612ee382612ea4565b602082019050919050565b5f6020820190508181035f830152612f0581612ecc565b9050919050565b5f612f168261220f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f4857612f476124eb565b5b600182019050919050565b7f4f6e6c7920342073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f612f87601783612111565b9150612f9282612f53565b602082019050919050565b5f6020820190508181035f830152612fb481612f7b565b9050919050565b5f612fc58261220f565b9150612fd08361220f565b9250828203905081811115612fe857612fe76124eb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130258261220f565b91506130308361220f565b9250826130405761303f612fee565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130a5602183612111565b91506130b08261304b565b604082019050919050565b5f6020820190508181035f8301526130d281613099565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61310d601b83612111565b9150613118826130d9565b602082019050919050565b5f6020820190508181035f83015261313a81613101565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205513eacc343dc7f2835af0b2ab9e9bf927122ccb87d661433c38483710378eb564736f6c63430008180033

Deployed Bytecode

0x608060405260043610610143575f3560e01c806367b34e01116100b55780638f913c9a1161006e5780638f913c9a146103fc57806395d89b4114610424578063a9059cbb1461044e578063dd62ed3e1461048a578063f085c5be146104c6578063faf9e229146104dc5761014a565b806367b34e011461030257806370a082311461032c578063715018a6146103685780637ac1b0a51461037e5780638912a12e146103a85780638da5cb5b146103d25761014a565b80631052cd48116101075780631052cd481461023057806318160ddd1461024657806323b872dd14610270578063313ce567146102ac57806348bc37b3146102d657806356a060a2146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630a4ceac0146101b45780630a5ae0fd146101ca5780630c55dffc146102065761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610162610504565b60405161016f9190612191565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612242565b610541565b6040516101ab919061229a565b60405180910390f35b3480156101bf575f80fd5b506101c861055e565b005b3480156101d5575f80fd5b506101f060048036038101906101eb91906122b3565b6105f5565b6040516101fd919061229a565b60405180910390f35b348015610211575f80fd5b5061021a6106e5565b60405161022791906122ed565b60405180910390f35b34801561023b575f80fd5b506102446106eb565b005b348015610251575f80fd5b5061025a6107b1565b60405161026791906122ed565b60405180910390f35b34801561027b575f80fd5b5061029660048036038101906102919190612306565b6107d4565b6040516102a3919061229a565b60405180910390f35b3480156102b7575f80fd5b506102c06108a8565b6040516102cd9190612371565b60405180910390f35b3480156102e1575f80fd5b506102ea6108b0565b005b3480156102f7575f80fd5b5061030061091f565b005b34801561030d575f80fd5b50610316610b3b565b60405161032391906122ed565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d919061238a565b610b41565b60405161035f91906122ed565b60405180910390f35b348015610373575f80fd5b5061037c610b87565b005b348015610389575f80fd5b50610392610cd5565b60405161039f91906122ed565b60405180910390f35b3480156103b3575f80fd5b506103bc610cdb565b6040516103c991906122ed565b60405180910390f35b3480156103dd575f80fd5b506103e6610ce1565b6040516103f391906123c4565b60405180910390f35b348015610407575f80fd5b50610422600480360381019061041d91906122b3565b610d08565b005b34801561042f575f80fd5b50610438610e3d565b6040516104459190612191565b60405180910390f35b348015610459575f80fd5b50610474600480360381019061046f9190612242565b610e7a565b604051610481919061229a565b60405180910390f35b348015610495575f80fd5b506104b060048036038101906104ab91906123dd565b610e97565b6040516104bd91906122ed565b60405180910390f35b3480156104d1575f80fd5b506104da610f19565b005b3480156104e7575f80fd5b5061050260048036038101906104fd9190612242565b611048565b005b60606040518060400160405280600a81526020017f53746f636b436861696e00000000000000000000000000000000000000000000815250905090565b5f61055461054d611148565b848461114f565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661059e611148565b73ffffffffffffffffffffffffffffffffffffffff16146105bd575f80fd5b5f6105c730610b41565b90505f8111156105db576105da81611312565b5b5f4790505f8111156105f1576105f08161157d565b5b5050565b5f6105fe611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461068a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161068190612465565b60405180910390fd5b816007819055508160088190555060058211156106dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d3906124cd565b60405180910390fd5b60019050919050565b60115481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661072b611148565b73ffffffffffffffffffffffffffffffffffffffff161461074a575f80fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f193505050501580156107ae573d5f803e3d5ffd5b50565b5f6009600a6107c09190612647565b633b9aca006107cf9190612691565b905090565b5f6107e08484846115e5565b61089d846107ec611148565b610898856040518060600160405280602881526020016131426028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61084f611148565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ec69092919063ffffffff16565b61114f565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108f0611148565b73ffffffffffffffffffffffffffffffffffffffff161461090f575f80fd5b5f47905061091c8161157d565b50565b610927611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa90612465565b60405180910390fd5b601360149054906101000a900460ff1615610a03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fa9061271c565b60405180910390fd5b610a4b3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610a379190612647565b633b9aca00610a469190612691565b61114f565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a9330610b41565b5f80610a9d610ce1565b426040518863ffffffff1660e01b8152600401610abf9695949392919061277c565b60606040518083038185885af1158015610adb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610b0091906127ef565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b60105481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b8f611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1290612465565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610d10611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9390612465565b60405180910390fd5b5f8111610dde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd5906128af565b60405180910390fd5b80601081905550610ded611148565b73ffffffffffffffffffffffffffffffffffffffff167fe2ebdeccb5ab7731072a61c78a45072d67b68837f2503c2f8986b9f3ac56527e82604051610e3291906122ed565b60405180910390a250565b60606040518060400160405280600581526020017f53544f434b000000000000000000000000000000000000000000000000000000815250905090565b5f610e8d610e86611148565b84846115e5565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610f21611148565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa490612465565b60405180910390fd5b6009600a610fbb9190612647565b633b9aca00610fca9190612691565b600e819055506009600a610fde9190612647565b633b9aca00610fed9190612691565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6110229190612647565b633b9aca006110319190612691565b60405161103e91906122ed565b60405180910390a1565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611088611148565b73ffffffffffffffffffffffffffffffffffffffff16146110a7575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161110392919061291f565b6020604051808303815f875af115801561111f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111439190612970565b505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b490612a0b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122290612a99565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161130591906122ed565b60405180910390a3505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561134957611348612ab7565b5b6040519080825280602002602001820160405280156113775781602001602082028036833780820191505090505b50905030815f8151811061138e5761138d612ae4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611432573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114569190612b25565b8160018151811061146a57611469612ae4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114d03060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461114f565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611532959493929190612c07565b5f604051808303815f87803b158015611549575f80fd5b505af115801561155b573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156115e1573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611653576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164a90612ccf565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b890612d5d565b60405180910390fd5b5f8111611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fa90612deb565b60405180910390fd5b5f61170c610ce1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561177a575061174a610ce1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611c16575f600d54036117c7576117c460646117b6600954600d54116117a3576005546117a7565b6007545b85611f2890919063ffffffff16565b611f9f90919063ffffffff16565b90505b5f600d5411156117fc576117f960646117eb600c5485611f2890919063ffffffff16565b611f9f90919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118a5575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118f8575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119f057600e54821115611942576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193990612e53565b60405180910390fd5b600f548261194f85610b41565b6119599190612e71565b111561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190612eee565b60405180910390fd5b6119d660646119c8600954600d54116119b5576005546119b9565b6007545b85611f2890919063ffffffff16565b611f9f90919063ffffffff16565b9050600d5f8154809291906119ea90612f0c565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a7857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611abc57611ab96064611aab600a54600d5411611a9857600654611a9c565b6008545b85611f2890919063ffffffff16565b611f9f90919063ffffffff16565b90505b5f611ac630610b41565b9050601360159054906101000a900460ff16158015611b31575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b495750601360169054906101000a900460ff165b8015611b56575060105481115b8015611b655750600b54600d54115b15611c1457601554431115611b7c575f6014819055505b600460145410611bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb890612f9d565b60405180910390fd5b611bde611bd984611bd484601154611fe8565b611fe8565b611312565b5f4790505f811115611bf457611bf34761157d565b5b60145f815480929190611c0690612f0c565b919050555043601581905550505b505b5f811115611d1557611c6e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461200090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d0c91906122ed565b60405180910390a35b611d658260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461205d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611e08611dbc828461205d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461200090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611eab848661205d90919063ffffffff16565b604051611eb891906122ed565b60405180910390a350505050565b5f838311158290611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f049190612191565b60405180910390fd5b505f8385611f1b9190612fbb565b9050809150509392505050565b5f808303611f38575f9050611f99565b5f8284611f459190612691565b9050828482611f54919061301b565b14611f94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8b906130bb565b60405180910390fd5b809150505b92915050565b5f611fe083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120a6565b905092915050565b5f818311611ff65782611ff8565b815b905092915050565b5f80828461200e9190612e71565b905083811015612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a90613123565b60405180910390fd5b8091505092915050565b5f61209e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ec6565b905092915050565b5f80831182906120ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e39190612191565b60405180910390fd5b505f83856120fa919061301b565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561213e578082015181840152602081019050612123565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61216382612107565b61216d8185612111565b935061217d818560208601612121565b61218681612149565b840191505092915050565b5f6020820190508181035f8301526121a98184612159565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6121de826121b5565b9050919050565b6121ee816121d4565b81146121f8575f80fd5b50565b5f81359050612209816121e5565b92915050565b5f819050919050565b6122218161220f565b811461222b575f80fd5b50565b5f8135905061223c81612218565b92915050565b5f8060408385031215612258576122576121b1565b5b5f612265858286016121fb565b92505060206122768582860161222e565b9150509250929050565b5f8115159050919050565b61229481612280565b82525050565b5f6020820190506122ad5f83018461228b565b92915050565b5f602082840312156122c8576122c76121b1565b5b5f6122d58482850161222e565b91505092915050565b6122e78161220f565b82525050565b5f6020820190506123005f8301846122de565b92915050565b5f805f6060848603121561231d5761231c6121b1565b5b5f61232a868287016121fb565b935050602061233b868287016121fb565b925050604061234c8682870161222e565b9150509250925092565b5f60ff82169050919050565b61236b81612356565b82525050565b5f6020820190506123845f830184612362565b92915050565b5f6020828403121561239f5761239e6121b1565b5b5f6123ac848285016121fb565b91505092915050565b6123be816121d4565b82525050565b5f6020820190506123d75f8301846123b5565b92915050565b5f80604083850312156123f3576123f26121b1565b5b5f612400858286016121fb565b9250506020612411858286016121fb565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61244f602083612111565b915061245a8261241b565b602082019050919050565b5f6020820190508181035f83015261247c81612443565b9050919050565b7f5461782063616e6e6f74206578636565642035000000000000000000000000005f82015250565b5f6124b7601383612111565b91506124c282612483565b602082019050919050565b5f6020820190508181035f8301526124e4816124ab565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561256d57808604811115612549576125486124eb565b5b60018516156125585780820291505b808102905061256685612518565b945061252d565b94509492505050565b5f826125855760019050612640565b81612592575f9050612640565b81600181146125a857600281146125b2576125e1565b6001915050612640565b60ff8411156125c4576125c36124eb565b5b8360020a9150848211156125db576125da6124eb565b5b50612640565b5060208310610133831016604e8410600b84101617156126165782820a905083811115612611576126106124eb565b5b612640565b6126238484846001612524565b9250905081840481111561263a576126396124eb565b5b81810290505b9392505050565b5f6126518261220f565b915061265c83612356565b92506126897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612576565b905092915050565b5f61269b8261220f565b91506126a68361220f565b92508282026126b48161220f565b915082820484148315176126cb576126ca6124eb565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612706601783612111565b9150612711826126d2565b602082019050919050565b5f6020820190508181035f830152612733816126fa565b9050919050565b5f819050919050565b5f819050919050565b5f61276661276161275c8461273a565b612743565b61220f565b9050919050565b6127768161274c565b82525050565b5f60c08201905061278f5f8301896123b5565b61279c60208301886122de565b6127a9604083018761276d565b6127b6606083018661276d565b6127c360808301856123b5565b6127d060a08301846122de565b979650505050505050565b5f815190506127e981612218565b92915050565b5f805f60608486031215612806576128056121b1565b5b5f612813868287016127db565b9350506020612824868287016127db565b9250506040612835868287016127db565b9150509250925092565b7f546178207468726573686f6c64206d75737420626520677265617465722074685f8201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b5f612899602483612111565b91506128a48261283f565b604082019050919050565b5f6020820190508181035f8301526128c68161288d565b9050919050565b5f6128e76128e26128dd846121b5565b612743565b6121b5565b9050919050565b5f6128f8826128cd565b9050919050565b5f612909826128ee565b9050919050565b612919816128ff565b82525050565b5f6040820190506129325f830185612910565b61293f60208301846122de565b9392505050565b61294f81612280565b8114612959575f80fd5b50565b5f8151905061296a81612946565b92915050565b5f60208284031215612985576129846121b1565b5b5f6129928482850161295c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129f5602483612111565b9150612a008261299b565b604082019050919050565b5f6020820190508181035f830152612a22816129e9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a83602283612111565b9150612a8e82612a29565b604082019050919050565b5f6020820190508181035f830152612ab081612a77565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612b1f816121e5565b92915050565b5f60208284031215612b3a57612b396121b1565b5b5f612b4784828501612b11565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612b82816121d4565b82525050565b5f612b938383612b79565b60208301905092915050565b5f602082019050919050565b5f612bb582612b50565b612bbf8185612b5a565b9350612bca83612b6a565b805f5b83811015612bfa578151612be18882612b88565b9750612bec83612b9f565b925050600181019050612bcd565b5085935050505092915050565b5f60a082019050612c1a5f8301886122de565b612c27602083018761276d565b8181036040830152612c398186612bab565b9050612c4860608301856123b5565b612c5560808301846122de565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612cb9602583612111565b9150612cc482612c5f565b604082019050919050565b5f6020820190508181035f830152612ce681612cad565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d47602383612111565b9150612d5282612ced565b604082019050919050565b5f6020820190508181035f830152612d7481612d3b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612dd5602983612111565b9150612de082612d7b565b604082019050919050565b5f6020820190508181035f830152612e0281612dc9565b9050919050565b7f4578636565647320746865205f6d617842757953697a652e00000000000000005f82015250565b5f612e3d601883612111565b9150612e4882612e09565b602082019050919050565b5f6020820190508181035f830152612e6a81612e31565b9050919050565b5f612e7b8261220f565b9150612e868361220f565b9250828201905080821115612e9e57612e9d6124eb565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612ed8601a83612111565b9150612ee382612ea4565b602082019050919050565b5f6020820190508181035f830152612f0581612ecc565b9050919050565b5f612f168261220f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f4857612f476124eb565b5b600182019050919050565b7f4f6e6c7920342073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f612f87601783612111565b9150612f9282612f53565b602082019050919050565b5f6020820190508181035f830152612fb481612f7b565b9050919050565b5f612fc58261220f565b9150612fd08361220f565b9250828203905081811115612fe857612fe76124eb565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130258261220f565b91506130308361220f565b9250826130405761303f612fee565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130a5602183612111565b91506130b08261304b565b604082019050919050565b5f6020820190508181035f8301526130d281613099565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61310d601b83612111565b9150613118826130d9565b602082019050919050565b5f6020820190508181035f83015261313a81613101565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205513eacc343dc7f2835af0b2ab9e9bf927122ccb87d661433c38483710378eb564736f6c63430008180033

Deployed Bytecode Sourcemap

5142:10465:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8155:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9083:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14646:400;;;;;;;;;;;;;:::i;:::-;;14362:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7017:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13532:178;;;;;;;;;;;;;:::i;:::-;;8471:103;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9269:329;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8367:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15059:219;;;;;;;;;;;;;:::i;:::-;;13946:403;;;;;;;;;;;;;:::i;:::-;;6933:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8587:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4219:148;;;;;;;;;;;;;:::i;:::-;;6761:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6844:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4003:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15291:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8259:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8727:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8919:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13216:182;;;;;;;;;;;;;:::i;:::-;;13723:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8155:91;8192:13;8229:5;;;;;;;;;;;;;;;;;8222:12;;8155:91;:::o;9083:173::-;9158:4;9179:39;9188:12;:10;:12::i;:::-;9202:7;9211:6;9179:8;:39::i;:::-;9240:4;9233:11;;9083:173;;;;:::o;14646:400::-;14722:18;;;;;;;;;;;14708:32;;:12;:10;:12::i;:::-;:32;;;14700:41;;;;;;14756:20;14777:24;14795:4;14777:9;:24::i;:::-;14756:45;;14832:1;14819:12;:14;14816:79;;;14849:30;14866:12;14849:16;:30::i;:::-;14816:79;14909:18;14928:21;14909:40;;14978:1;14967:10;:12;14964:71;;;14995:24;15008:10;14995:12;:24::i;:::-;14964:71;14685:361;;14646:400::o;14362:229::-;14425:4;4141:12;:10;:12::i;:::-;4131:22;;:6;;;;;;;;;;:22;;;4123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14457:6:::1;14446:8;:17;;;;14490:6;14478:9;:18;;;;14529:1;14519:6;:11;;14511:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14575:4;14568:11;;14362:229:::0;;;:::o;7017:52::-;;;;:::o;13532:178::-;13605:18;;;;;;;;;;;13589:34;;:12;:10;:12::i;:::-;:34;;;13581:43;;;;;;13647:18;;;;;;;;;;;13639:36;;:59;13676:21;13639:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13532:178::o;8471:103::-;8524:7;6583:1;6639:2;:13;;;;:::i;:::-;6626:10;:26;;;;:::i;:::-;8548:14;;8471:103;:::o;9269:329::-;9367:4;9388:36;9398:6;9406:9;9417:6;9388:9;:36::i;:::-;9439:121;9448:6;9456:12;:10;:12::i;:::-;9470:89;9508:6;9470:89;;;;;;;;;;;;;;;;;:11;:19;9482:6;9470:19;;;;;;;;;;;;;;;:33;9490:12;:10;:12::i;:::-;9470:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9439:8;:121::i;:::-;9582:4;9575:11;;9269:329;;;;;:::o;8367:91::-;8408:5;6583:1;8430:16;;8367:91;:::o;15059:219::-;15135:18;;;;;;;;;;;15121:32;;:12;:10;:12::i;:::-;:32;;;15113:41;;;;;;15169:26;15198:21;15169:50;;15234:32;15247:18;15234:12;:32::i;:::-;15098:180;15059:219::o;13946:403::-;4141:12;:10;:12::i;:::-;4131:22;;:6;;;;;;;;;;:22;;;4123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14016:11:::1;;;;;;;;;;;14015:12;14007:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;14069:58;14086:4;14101:15;;;;;;;;;;;6583:1;6639:2;:13;;;;:::i;:::-;6626:10;:26;;;;:::i;:::-;14069:8;:58::i;:::-;14142:15;;;;;;;;;;;:31;;;14181:21;14212:4;14218:24;14236:4;14218:9;:24::i;:::-;14243:1;14245::::0;14247:7:::1;:5;:7::i;:::-;14255:15;14142:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14300:4;14286:11;;:18;;;;;;;;;;;;;;;;;;14333:4;14319:11;;:18;;;;;;;;;;;;;;;;;;13946:403::o:0;6933:53::-;;;;:::o;8587:127::-;8653:7;8684:9;:18;8694:7;8684:18;;;;;;;;;;;;;;;;8677:25;;8587:127;;;:::o;4219:148::-;4141:12;:10;:12::i;:::-;4131:22;;:6;;;;;;;;;;:22;;;4123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4326:1:::1;4289:40;;4310:6;::::0;::::1;;;;;;;;4289:40;;;;;;;;;;;;4357:1;4340:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4219:148::o:0;6761:54::-;;;;:::o;6844:60::-;;;;:::o;4003:79::-;4041:7;4068:6;;;;;;;;;;;4061:13;;4003:79;:::o;15291:313::-;4141:12;:10;:12::i;:::-;4131:22;;:6;;;;;;;;;;:22;;;4123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15400:1:::1;15382:15;:19;15374:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15469:15;15453:13;:31;;;;15548:12;:10;:12::i;:::-;15528:50;;;15562:15;15528:50;;;;;;:::i;:::-;;;;;;;;15291:313:::0;:::o;8259:95::-;8298:13;8335:7;;;;;;;;;;;;;;;;;8328:14;;8259:95;:::o;8727:179::-;8805:4;8826:42;8836:12;:10;:12::i;:::-;8850:9;8861:6;8826:9;:42::i;:::-;8890:4;8883:11;;8727:179;;;;:::o;8919:151::-;9000:7;9031:11;:18;9043:5;9031:18;;;;;;;;;;;;;;;:27;9050:7;9031:27;;;;;;;;;;;;;;;;9024:34;;8919:151;;;;:::o;13216:182::-;4141:12;:10;:12::i;:::-;4131:22;;:6;;;;;;;;;;:22;;;4123:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6583:1:::1;6639:2;:13;;;;:::i;:::-;6626:10;:26;;;;:::i;:::-;13278:11;:21;;;;6583:1;6639:2;:13;;;;:::i;:::-;6626:10;:26;;;;:::i;:::-;13314:17;:25;;;;13359:27;6583:1;6639:2;:13;;;;:::i;:::-;6626:10;:26;;;;:::i;:::-;13359:27;;;;;;:::i;:::-;;;;;;;;13216:182::o:0;13723:207::-;13828:18;;;;;;;;;;;13812:34;;:12;:10;:12::i;:::-;:34;;;13804:43;;;;;;13869:10;13862:27;;;13890:18;;;;;;;;;;;13910:7;13862:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13723:207;;:::o;1743:98::-;1796:7;1823:10;1816:17;;1743:98;:::o;9611:355::-;9725:1;9708:19;;:5;:19;;;9700:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9810:1;9791:21;;:7;:21;;;9783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9896:6;9866:11;:18;9878:5;9866:18;;;;;;;;;;;;;;;:27;9885:7;9866:27;;;;;;;;;;;;;;;:36;;;;9938:7;9922:32;;9931:5;9922:32;;;9947:6;9922:32;;;;;;:::i;:::-;;;;;;;;9611:355;;;:::o;12672:531::-;7423:4;7414:6;;:13;;;;;;;;;;;;;;;;;;12754:21:::1;12792:1;12778:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12754:40;;12827:4;12809;12814:1;12809:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12857:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12847:4;12852:1;12847:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12894:62;12911:4;12926:15;;;;;;;;;;;12944:11;12894:8;:62::i;:::-;12971:15;;;;;;;;;;;:66;;;13056:11;13086:1;13106:4;13137;13161:15;12971:220;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12739:464;7467:5:::0;7458:6;;:14;;;;;;;;;;;;;;;;;;12672:531;:::o;13411:108::-;13472:18;;;;;;;;;;;:27;;:35;13500:6;13472:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13411:108;:::o;9979:2563::-;10087:1;10071:18;;:4;:18;;;10063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10168:1;10154:16;;:2;:16;;;10146:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10242:1;10233:6;:10;10225:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10304:17;10350:7;:5;:7::i;:::-;10342:15;;:4;:15;;;;:32;;;;;10367:7;:5;:7::i;:::-;10361:13;;:2;:13;;;;10342:32;10338:1819;;;10413:1;10401:10;;:13;10398:148;;10450:76;10522:3;10450:67;10473:17;;10462:10;;:28;10461:55;;10501:15;;10461:55;;;10492:8;;10461:55;10450:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;10438:88;;10398:148;10578:1;10567:10;;:12;10564:104;;;10615:33;10644:3;10615:24;10626:12;;10615:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;10603:45;;10564:104;10701:13;;;;;;;;;;;10693:21;;:4;:21;;;:55;;;;;10732:15;;;;;;;;;;;10718:30;;:2;:30;;;;10693:55;:77;;;;;10754:12;:16;10767:2;10754:16;;;;;;;;;;;;;;;;;;;;;;;;;10752:18;10693:77;10689:436;;;10814:11;;10804:6;:21;;10796:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10911:17;;10901:6;10885:13;10895:2;10885:9;:13::i;:::-;:22;;;;:::i;:::-;:43;;10877:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;10994:76;11066:3;10994:67;11017:17;;11006:10;;:28;11005:55;;11045:15;;11005:55;;;11036:8;;11005:55;10994:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;10982:88;;11093:10;;:12;;;;;;;;;:::i;:::-;;;;;;10689:436;11155:13;;;;;;;;;;;11149:19;;:2;:19;;;:43;;;;;11187:4;11172:20;;:4;:20;;;;11149:43;11146:181;;;11229:78;11303:3;11229:69;11252:17;;11241:10;;:28;11240:57;;11281:16;;11240:57;;;11271:9;;11240:57;11229:6;:10;;:69;;;;:::i;:::-;:73;;:78;;;;:::i;:::-;11217:90;;11146:181;11348:28;11379:24;11397:4;11379:9;:24::i;:::-;11348:55;;11427:6;;;;;;;;;;;11426:7;:30;;;;;11443:13;;;;;;;;;;;11437:19;;:2;:19;;;11426:30;:45;;;;;11460:11;;;;;;;;;;;11426:45;:85;;;;;11498:13;;11475:20;:36;11426:85;:113;;;;;11528:11;;11515:10;;:24;11426:113;11422:720;;;11583:14;;11568:12;:29;11564:99;;;11638:1;11626:9;:13;;;;11564:99;11705:1;11693:9;;:13;11685:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;11757:70;11774:52;11778:6;11786:39;11790:20;11812:12;;11786:3;:39::i;:::-;11774:3;:52::i;:::-;11757:16;:70::i;:::-;11850:26;11879:21;11850:50;;11948:1;11927:18;:22;11923:114;;;11978:35;11991:21;11978:12;:35::i;:::-;11923:114;12059:9;;:11;;;;;;;;;:::i;:::-;;;;;;12110:12;12093:14;:29;;;;11541:601;11422:720;10376:1781;10338:1819;12187:1;12177:9;:11;12174:169;;;12229:39;12258:9;12229;:24;12247:4;12229:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;12204:9;:24;12222:4;12204:24;;;;;;;;;;;;;;;:64;;;;12311:4;12288:39;;12297:4;12288:39;;;12317:9;12288:39;;;;;;:::i;:::-;;;;;;;;12174:169;12373:27;12393:6;12373:9;:15;12383:4;12373:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;12357:9;:15;12367:4;12357:15;;;;;;;;;;;;;;;:43;;;;12429:40;12447:21;12458:9;12447:6;:10;;:21;;;;:::i;:::-;12429:9;:13;12439:2;12429:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;12415:9;:13;12425:2;12415:13;;;;;;;;;;;;;;;:54;;;;12504:2;12489:41;;12498:4;12489:41;;;12508:21;12519:9;12508:6;:10;;:21;;;;:::i;:::-;12489:41;;;;;;:::i;:::-;;;;;;;;10048:2494;9979:2563;;;:::o;2884:190::-;2970:7;3003:1;2998;:6;;3006:12;2990:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3030:9;3046:1;3042;:5;;;;:::i;:::-;3030:17;;3065:1;3058:8;;;2884:190;;;;;:::o;3083:246::-;3141:7;3170:1;3165;:6;3161:47;;3195:1;3188:8;;;;3161:47;3218:9;3234:1;3230;:5;;;;:::i;:::-;3218:17;;3263:1;3258;3254;:5;;;;:::i;:::-;:10;3246:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3320:1;3313:8;;;3083:246;;;;;:::o;3338:132::-;3396:7;3423:39;3427:1;3430;3423:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3416:46;;3338:132;;;;:::o;12555:104::-;12612:7;12641:1;12639;:3;12638:9;;12646:1;12638:9;;;12644:1;12638:9;12631:16;;12555:104;;;;:::o;2551:179::-;2609:7;2629:9;2645:1;2641;:5;;;;:::i;:::-;2629:17;;2670:1;2665;:6;;2657:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2721:1;2714:8;;;2551:179;;;;:::o;2739:136::-;2797:7;2824:43;2828:1;2831;2824:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2817:50;;2739:136;;;;:::o;3479:189::-;3565:7;3597:1;3593;:5;3600:12;3585:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3624:9;3640:1;3636;:5;;;;:::i;:::-;3624:17;;3659:1;3652:8;;;3479:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:182::-;6495:34;6491:1;6483:6;6479:14;6472:58;6355:182;:::o;6543:366::-;6685:3;6706:67;6770:2;6765:3;6706:67;:::i;:::-;6699:74;;6782:93;6871:3;6782:93;:::i;:::-;6900:2;6895:3;6891:12;6884:19;;6543:366;;;:::o;6915:419::-;7081:4;7119:2;7108:9;7104:18;7096:26;;7168:9;7162:4;7158:20;7154:1;7143:9;7139:17;7132:47;7196:131;7322:4;7196:131;:::i;:::-;7188:139;;6915:419;;;:::o;7340:169::-;7480:21;7476:1;7468:6;7464:14;7457:45;7340:169;:::o;7515:366::-;7657:3;7678:67;7742:2;7737:3;7678:67;:::i;:::-;7671:74;;7754:93;7843:3;7754:93;:::i;:::-;7872:2;7867:3;7863:12;7856:19;;7515:366;;;:::o;7887:419::-;8053:4;8091:2;8080:9;8076:18;8068:26;;8140:9;8134:4;8130:20;8126:1;8115:9;8111:17;8104:47;8168:131;8294:4;8168:131;:::i;:::-;8160:139;;7887:419;;;:::o;8312:180::-;8360:77;8357:1;8350:88;8457:4;8454:1;8447:15;8481:4;8478:1;8471:15;8498:102;8540:8;8587:5;8584:1;8580:13;8559:34;;8498:102;;;:::o;8606:848::-;8667:5;8674:4;8698:6;8689:15;;8722:5;8713:14;;8736:712;8757:1;8747:8;8744:15;8736:712;;;8852:4;8847:3;8843:14;8837:4;8834:24;8831:50;;;8861:18;;:::i;:::-;8831:50;8911:1;8901:8;8897:16;8894:451;;;9326:4;9319:5;9315:16;9306:25;;8894:451;9376:4;9370;9366:15;9358:23;;9406:32;9429:8;9406:32;:::i;:::-;9394:44;;8736:712;;;8606:848;;;;;;;:::o;9460:1073::-;9514:5;9705:8;9695:40;;9726:1;9717:10;;9728:5;;9695:40;9754:4;9744:36;;9771:1;9762:10;;9773:5;;9744:36;9840:4;9888:1;9883:27;;;;9924:1;9919:191;;;;9833:277;;9883:27;9901:1;9892:10;;9903:5;;;9919:191;9964:3;9954:8;9951:17;9948:43;;;9971:18;;:::i;:::-;9948:43;10020:8;10017:1;10013:16;10004:25;;10055:3;10048:5;10045:14;10042:40;;;10062:18;;:::i;:::-;10042:40;10095:5;;;9833:277;;10219:2;10209:8;10206:16;10200:3;10194:4;10191:13;10187:36;10169:2;10159:8;10156:16;10151:2;10145:4;10142:12;10138:35;10122:111;10119:246;;;10275:8;10269:4;10265:19;10256:28;;10310:3;10303:5;10300:14;10297:40;;;10317:18;;:::i;:::-;10297:40;10350:5;;10119:246;10390:42;10428:3;10418:8;10412:4;10409:1;10390:42;:::i;:::-;10375:57;;;;10464:4;10459:3;10455:14;10448:5;10445:25;10442:51;;;10473:18;;:::i;:::-;10442:51;10522:4;10515:5;10511:16;10502:25;;9460:1073;;;;;;:::o;10539:281::-;10597:5;10621:23;10639:4;10621:23;:::i;:::-;10613:31;;10665:25;10681:8;10665:25;:::i;:::-;10653:37;;10709:104;10746:66;10736:8;10730:4;10709:104;:::i;:::-;10700:113;;10539:281;;;;:::o;10826:410::-;10866:7;10889:20;10907:1;10889:20;:::i;:::-;10884:25;;10923:20;10941:1;10923:20;:::i;:::-;10918:25;;10978:1;10975;10971:9;11000:30;11018:11;11000:30;:::i;:::-;10989:41;;11179:1;11170:7;11166:15;11163:1;11160:22;11140:1;11133:9;11113:83;11090:139;;11209:18;;:::i;:::-;11090:139;10874:362;10826:410;;;;:::o;11242:173::-;11382:25;11378:1;11370:6;11366:14;11359:49;11242:173;:::o;11421:366::-;11563:3;11584:67;11648:2;11643:3;11584:67;:::i;:::-;11577:74;;11660:93;11749:3;11660:93;:::i;:::-;11778:2;11773:3;11769:12;11762:19;;11421:366;;;:::o;11793:419::-;11959:4;11997:2;11986:9;11982:18;11974:26;;12046:9;12040:4;12036:20;12032:1;12021:9;12017:17;12010:47;12074:131;12200:4;12074:131;:::i;:::-;12066:139;;11793:419;;;:::o;12218:85::-;12263:7;12292:5;12281:16;;12218:85;;;:::o;12309:60::-;12337:3;12358:5;12351:12;;12309:60;;;:::o;12375:158::-;12433:9;12466:61;12484:42;12493:32;12519:5;12493:32;:::i;:::-;12484:42;:::i;:::-;12466:61;:::i;:::-;12453:74;;12375:158;;;:::o;12539:147::-;12634:45;12673:5;12634:45;:::i;:::-;12629:3;12622:58;12539:147;;:::o;12692:807::-;12941:4;12979:3;12968:9;12964:19;12956:27;;12993:71;13061:1;13050:9;13046:17;13037:6;12993:71;:::i;:::-;13074:72;13142:2;13131:9;13127:18;13118:6;13074:72;:::i;:::-;13156:80;13232:2;13221:9;13217:18;13208:6;13156:80;:::i;:::-;13246;13322:2;13311:9;13307:18;13298:6;13246:80;:::i;:::-;13336:73;13404:3;13393:9;13389:19;13380:6;13336:73;:::i;:::-;13419;13487:3;13476:9;13472:19;13463:6;13419:73;:::i;:::-;12692:807;;;;;;;;;:::o;13505:143::-;13562:5;13593:6;13587:13;13578:22;;13609:33;13636:5;13609:33;:::i;:::-;13505:143;;;;:::o;13654:663::-;13742:6;13750;13758;13807:2;13795:9;13786:7;13782:23;13778:32;13775:119;;;13813:79;;:::i;:::-;13775:119;13933:1;13958:64;14014:7;14005:6;13994:9;13990:22;13958:64;:::i;:::-;13948:74;;13904:128;14071:2;14097:64;14153:7;14144:6;14133:9;14129:22;14097:64;:::i;:::-;14087:74;;14042:129;14210:2;14236:64;14292:7;14283:6;14272:9;14268:22;14236:64;:::i;:::-;14226:74;;14181:129;13654:663;;;;;:::o;14323:223::-;14463:34;14459:1;14451:6;14447:14;14440:58;14532:6;14527:2;14519:6;14515:15;14508:31;14323:223;:::o;14552:366::-;14694:3;14715:67;14779:2;14774:3;14715:67;:::i;:::-;14708:74;;14791:93;14880:3;14791:93;:::i;:::-;14909:2;14904:3;14900:12;14893:19;;14552:366;;;:::o;14924:419::-;15090:4;15128:2;15117:9;15113:18;15105:26;;15177:9;15171:4;15167:20;15163:1;15152:9;15148:17;15141:47;15205:131;15331:4;15205:131;:::i;:::-;15197:139;;14924:419;;;:::o;15349:142::-;15399:9;15432:53;15450:34;15459:24;15477:5;15459:24;:::i;:::-;15450:34;:::i;:::-;15432:53;:::i;:::-;15419:66;;15349:142;;;:::o;15497:126::-;15547:9;15580:37;15611:5;15580:37;:::i;:::-;15567:50;;15497:126;;;:::o;15629:134::-;15687:9;15720:37;15751:5;15720:37;:::i;:::-;15707:50;;15629:134;;;:::o;15769:147::-;15864:45;15903:5;15864:45;:::i;:::-;15859:3;15852:58;15769:147;;:::o;15922:348::-;16051:4;16089:2;16078:9;16074:18;16066:26;;16102:79;16178:1;16167:9;16163:17;16154:6;16102:79;:::i;:::-;16191:72;16259:2;16248:9;16244:18;16235:6;16191:72;:::i;:::-;15922:348;;;;;:::o;16276:116::-;16346:21;16361:5;16346:21;:::i;:::-;16339:5;16336:32;16326:60;;16382:1;16379;16372:12;16326:60;16276:116;:::o;16398:137::-;16452:5;16483:6;16477:13;16468:22;;16499:30;16523:5;16499:30;:::i;:::-;16398:137;;;;:::o;16541:345::-;16608:6;16657:2;16645:9;16636:7;16632:23;16628:32;16625:119;;;16663:79;;:::i;:::-;16625:119;16783:1;16808:61;16861:7;16852:6;16841:9;16837:22;16808:61;:::i;:::-;16798:71;;16754:125;16541:345;;;;:::o;16892:223::-;17032:34;17028:1;17020:6;17016:14;17009:58;17101:6;17096:2;17088:6;17084:15;17077:31;16892:223;:::o;17121:366::-;17263:3;17284:67;17348:2;17343:3;17284:67;:::i;:::-;17277:74;;17360:93;17449:3;17360:93;:::i;:::-;17478:2;17473:3;17469:12;17462:19;;17121:366;;;:::o;17493:419::-;17659:4;17697:2;17686:9;17682:18;17674:26;;17746:9;17740:4;17736:20;17732:1;17721:9;17717:17;17710:47;17774:131;17900:4;17774:131;:::i;:::-;17766:139;;17493:419;;;:::o;17918:221::-;18058:34;18054:1;18046:6;18042:14;18035:58;18127:4;18122:2;18114:6;18110:15;18103:29;17918:221;:::o;18145:366::-;18287:3;18308:67;18372:2;18367:3;18308:67;:::i;:::-;18301:74;;18384:93;18473:3;18384:93;:::i;:::-;18502:2;18497:3;18493:12;18486:19;;18145:366;;;:::o;18517:419::-;18683:4;18721:2;18710:9;18706:18;18698:26;;18770:9;18764:4;18760:20;18756:1;18745:9;18741:17;18734:47;18798:131;18924:4;18798:131;:::i;:::-;18790:139;;18517:419;;;:::o;18942:180::-;18990:77;18987:1;18980:88;19087:4;19084:1;19077:15;19111:4;19108:1;19101:15;19128:180;19176:77;19173:1;19166:88;19273:4;19270:1;19263:15;19297:4;19294:1;19287:15;19314:143;19371:5;19402:6;19396:13;19387:22;;19418:33;19445:5;19418:33;:::i;:::-;19314:143;;;;:::o;19463:351::-;19533:6;19582:2;19570:9;19561:7;19557:23;19553:32;19550:119;;;19588:79;;:::i;:::-;19550:119;19708:1;19733:64;19789:7;19780:6;19769:9;19765:22;19733:64;:::i;:::-;19723:74;;19679:128;19463:351;;;;:::o;19820:114::-;19887:6;19921:5;19915:12;19905:22;;19820:114;;;:::o;19940:184::-;20039:11;20073:6;20068:3;20061:19;20113:4;20108:3;20104:14;20089:29;;19940:184;;;;:::o;20130:132::-;20197:4;20220:3;20212:11;;20250:4;20245:3;20241:14;20233:22;;20130:132;;;:::o;20268:108::-;20345:24;20363:5;20345:24;:::i;:::-;20340:3;20333:37;20268:108;;:::o;20382:179::-;20451:10;20472:46;20514:3;20506:6;20472:46;:::i;:::-;20550:4;20545:3;20541:14;20527:28;;20382:179;;;;:::o;20567:113::-;20637:4;20669;20664:3;20660:14;20652:22;;20567:113;;;:::o;20716:732::-;20835:3;20864:54;20912:5;20864:54;:::i;:::-;20934:86;21013:6;21008:3;20934:86;:::i;:::-;20927:93;;21044:56;21094:5;21044:56;:::i;:::-;21123:7;21154:1;21139:284;21164:6;21161:1;21158:13;21139:284;;;21240:6;21234:13;21267:63;21326:3;21311:13;21267:63;:::i;:::-;21260:70;;21353:60;21406:6;21353:60;:::i;:::-;21343:70;;21199:224;21186:1;21183;21179:9;21174:14;;21139:284;;;21143:14;21439:3;21432:10;;20840:608;;;20716:732;;;;:::o;21454:831::-;21717:4;21755:3;21744:9;21740:19;21732:27;;21769:71;21837:1;21826:9;21822:17;21813:6;21769:71;:::i;:::-;21850:80;21926:2;21915:9;21911:18;21902:6;21850:80;:::i;:::-;21977:9;21971:4;21967:20;21962:2;21951:9;21947:18;21940:48;22005:108;22108:4;22099:6;22005:108;:::i;:::-;21997:116;;22123:72;22191:2;22180:9;22176:18;22167:6;22123:72;:::i;:::-;22205:73;22273:3;22262:9;22258:19;22249:6;22205:73;:::i;:::-;21454:831;;;;;;;;:::o;22291:224::-;22431:34;22427:1;22419:6;22415:14;22408:58;22500:7;22495:2;22487:6;22483:15;22476:32;22291:224;:::o;22521:366::-;22663:3;22684:67;22748:2;22743:3;22684:67;:::i;:::-;22677:74;;22760:93;22849:3;22760:93;:::i;:::-;22878:2;22873:3;22869:12;22862:19;;22521:366;;;:::o;22893:419::-;23059:4;23097:2;23086:9;23082:18;23074:26;;23146:9;23140:4;23136:20;23132:1;23121:9;23117:17;23110:47;23174:131;23300:4;23174:131;:::i;:::-;23166:139;;22893:419;;;:::o;23318:222::-;23458:34;23454:1;23446:6;23442:14;23435:58;23527:5;23522:2;23514:6;23510:15;23503:30;23318:222;:::o;23546:366::-;23688:3;23709:67;23773:2;23768:3;23709:67;:::i;:::-;23702:74;;23785:93;23874:3;23785:93;:::i;:::-;23903:2;23898:3;23894:12;23887:19;;23546:366;;;:::o;23918:419::-;24084:4;24122:2;24111:9;24107:18;24099:26;;24171:9;24165:4;24161:20;24157:1;24146:9;24142:17;24135:47;24199:131;24325:4;24199:131;:::i;:::-;24191:139;;23918:419;;;:::o;24343:228::-;24483:34;24479:1;24471:6;24467:14;24460:58;24552:11;24547:2;24539:6;24535:15;24528:36;24343:228;:::o;24577:366::-;24719:3;24740:67;24804:2;24799:3;24740:67;:::i;:::-;24733:74;;24816:93;24905:3;24816:93;:::i;:::-;24934:2;24929:3;24925:12;24918:19;;24577:366;;;:::o;24949:419::-;25115:4;25153:2;25142:9;25138:18;25130:26;;25202:9;25196:4;25192:20;25188:1;25177:9;25173:17;25166:47;25230:131;25356:4;25230:131;:::i;:::-;25222:139;;24949:419;;;:::o;25374:174::-;25514:26;25510:1;25502:6;25498:14;25491:50;25374:174;:::o;25554:366::-;25696:3;25717:67;25781:2;25776:3;25717:67;:::i;:::-;25710:74;;25793:93;25882:3;25793:93;:::i;:::-;25911:2;25906:3;25902:12;25895:19;;25554:366;;;:::o;25926:419::-;26092:4;26130:2;26119:9;26115:18;26107:26;;26179:9;26173:4;26169:20;26165:1;26154:9;26150:17;26143:47;26207:131;26333:4;26207:131;:::i;:::-;26199:139;;25926:419;;;:::o;26351:191::-;26391:3;26410:20;26428:1;26410:20;:::i;:::-;26405:25;;26444:20;26462:1;26444:20;:::i;:::-;26439:25;;26487:1;26484;26480:9;26473:16;;26508:3;26505:1;26502:10;26499:36;;;26515:18;;:::i;:::-;26499:36;26351:191;;;;:::o;26548:176::-;26688:28;26684:1;26676:6;26672:14;26665:52;26548:176;:::o;26730:366::-;26872:3;26893:67;26957:2;26952:3;26893:67;:::i;:::-;26886:74;;26969:93;27058:3;26969:93;:::i;:::-;27087:2;27082:3;27078:12;27071:19;;26730:366;;;:::o;27102:419::-;27268:4;27306:2;27295:9;27291:18;27283:26;;27355:9;27349:4;27345:20;27341:1;27330:9;27326:17;27319:47;27383:131;27509:4;27383:131;:::i;:::-;27375:139;;27102:419;;;:::o;27527:233::-;27566:3;27589:24;27607:5;27589:24;:::i;:::-;27580:33;;27635:66;27628:5;27625:77;27622:103;;27705:18;;:::i;:::-;27622:103;27752:1;27745:5;27741:13;27734:20;;27527:233;;;:::o;27766:173::-;27906:25;27902:1;27894:6;27890:14;27883:49;27766:173;:::o;27945:366::-;28087:3;28108:67;28172:2;28167:3;28108:67;:::i;:::-;28101:74;;28184:93;28273:3;28184:93;:::i;:::-;28302:2;28297:3;28293:12;28286:19;;27945:366;;;:::o;28317:419::-;28483:4;28521:2;28510:9;28506:18;28498:26;;28570:9;28564:4;28560:20;28556:1;28545:9;28541:17;28534:47;28598:131;28724:4;28598:131;:::i;:::-;28590:139;;28317:419;;;:::o;28742:194::-;28782:4;28802:20;28820:1;28802:20;:::i;:::-;28797:25;;28836:20;28854:1;28836:20;:::i;:::-;28831:25;;28880:1;28877;28873:9;28865:17;;28904:1;28898:4;28895:11;28892:37;;;28909:18;;:::i;:::-;28892:37;28742:194;;;;:::o;28942:180::-;28990:77;28987:1;28980:88;29087:4;29084:1;29077:15;29111:4;29108:1;29101:15;29128:185;29168:1;29185:20;29203:1;29185:20;:::i;:::-;29180:25;;29219:20;29237:1;29219:20;:::i;:::-;29214:25;;29258:1;29248:35;;29263:18;;:::i;:::-;29248:35;29305:1;29302;29298:9;29293:14;;29128:185;;;;:::o;29319:220::-;29459:34;29455:1;29447:6;29443:14;29436:58;29528:3;29523:2;29515:6;29511:15;29504:28;29319:220;:::o;29545:366::-;29687:3;29708:67;29772:2;29767:3;29708:67;:::i;:::-;29701:74;;29784:93;29873:3;29784:93;:::i;:::-;29902:2;29897:3;29893:12;29886:19;;29545:366;;;:::o;29917:419::-;30083:4;30121:2;30110:9;30106:18;30098:26;;30170:9;30164:4;30160:20;30156:1;30145:9;30141:17;30134:47;30198:131;30324:4;30198:131;:::i;:::-;30190:139;;29917:419;;;:::o;30342:177::-;30482:29;30478:1;30470:6;30466:14;30459:53;30342:177;:::o;30525:366::-;30667:3;30688:67;30752:2;30747:3;30688:67;:::i;:::-;30681:74;;30764:93;30853:3;30764:93;:::i;:::-;30882:2;30877:3;30873:12;30866:19;;30525:366;;;:::o;30897:419::-;31063:4;31101:2;31090:9;31086:18;31078:26;;31150:9;31144:4;31140:20;31136:1;31125:9;31121:17;31114:47;31178:131;31304:4;31178:131;:::i;:::-;31170:139;;30897:419;;;:::o

Swarm Source

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