ETH Price: $3,426.63 (+1.58%)

Token

ERC20 ***
 

Overview

Max Total Supply

100,000,000 ERC20 ***

Holders

114

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,000,000 ERC20 ***

Value
$0.00
0xbFDe8eD68c64BA17053DF46fe797B54564D08C46
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:
CodeAI

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-28
*/

// SPDX-License-Identifier: MIT      
/*
Code AI is a telegram bot that generates any code required 
by providing the most efficient tech all while keeping things user-friendly

WEBSITE: https://www.codeai.bot/ 
TELEGRAM: https://t.me/codaieth 
BOT: https://t.me/codeAI0x_bot 
TWITTER: https://twitter.com/codaieth 
DOCS: https://t.me/codaieth 
*/
pragma solidity 0.8.20;
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);
}
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 transferOwnership(address newOwner) public virtual onlyOwner() {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    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 CodeAI is Context, IERC20, Ownable {
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isBlacklisted;
    mapping (address => bool) private _isExcludedFromFee;
    address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;
    address payable private MarketingWallet;
    address payable private DevWallet;
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal =  100000000 * 10**_decimals; 
    string private constant _name = "CodeAI";
    string private constant _symbol = "CODAI";
    uint256 private SwapTokens = 100000 * 10**_decimals; 
    uint256 private maxSwapTokens = 1500000 * 10**_decimals;
    uint256 public maxTxAmount = 1500000 * 10**_decimals; 
    uint256 private buyTaxes = 30;
    uint256 private sellTaxes = 45;
    uint256 private _Buys_In = 0;
   
    IUniswapV2Router02 public uniswapV2Router;
    address private uniswapV2Pair;
    bool public tradeEnable = false;
    bool private _SwapBackEnable = false;
    bool private inSwap = false;
    
    
    event FeesRecieverUpdated(address indexed _newWallet);
    event ExcludeFromFeeUpdated(address indexed account);
    event includeFromFeeUpdated(address indexed account);
    event SwapThreshouldUpdated(uint256 indexed minToken, uint256 indexed maxToken);
    event SwapBackSettingUpdated(bool indexed state);
    event ERC20TokensRecovered(uint256 indexed _amount);
    event TradingOpenUpdated();
    event ETHBalanceRecovered();
    
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    constructor () {
    if (block.chainid == 56){
     uniswapV2Router = IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E); // PCS BSC Mainnet Router
     }
    else if(block.chainid == 1 || block.chainid == 5){
          uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap ETH Mainnet Router
      }
    else if(block.chainid == 42161){
           uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506); // Sushi Arbitrum Mainnet Router
      }
    else  if (block.chainid == 97){
     uniswapV2Router = IUniswapV2Router02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); // PCS BSC Testnet Router
     }
    else {
         revert("Wrong Chain Id");
        }
    uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
         MarketingWallet = payable(0x207746cC2E397724c534adD8bd5174af736cebFC);
         DevWallet = payable (0x6734E82123D210B8b8B52b1eC9bbA082E3F94395);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[_msgSender()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[MarketingWallet] = true;
        _isExcludedFromFee[DevWallet] = true;
        _isExcludedFromFee[deadWallet] = true;

       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 min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }
    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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), currentAllowance - amount);
        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");
        require(!isBlacklisted[from] && !isBlacklisted[to],"You can't transfer tokens");
        uint256 TaxSwap=0;

        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            require(tradeEnable, "Trading not enabled");       
               TaxSwap = amount * (buyTaxes) / (100);
        }
        
         if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            TaxSwap = 0;
        } 
         
          if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
             require(amount <= maxTxAmount, "Exceeds the _maxTxAmount.");
             require(balanceOf(to) + amount <= maxTxAmount, "Exceeds the maxWalletSize.");
              _Buys_In++;
          } 
        
          if (from != uniswapV2Pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
             require(amount <= maxTxAmount, "Exceeds the _maxTxAmount.");
          }
        
          if (to == uniswapV2Pair && from != address(this) && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                   TaxSwap = amount * (sellTaxes) / (100);
                
                } 
       
             uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && _SwapBackEnable && contractTokenBalance > SwapTokens && _Buys_In > 1) {
                swapTokensForEth(min(amount, min(contractTokenBalance, maxSwapTokens)));
               uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        _balances[from] = _balances[from] - amount; 
        _balances[to] = _balances[to] + (amount - (TaxSwap));
        emit Transfer(from, to, amount - (TaxSwap));
         if(TaxSwap > 0){
          _balances[address(this)] = _balances[address(this)] + (TaxSwap);
          emit Transfer(from, address(this),TaxSwap);
        }
    }
   
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        require(tokenAmount > 0, "amount must be greeter than 0");
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
   
    function sendETHToFee(uint256 amount) private {
       require(amount > 0, "amount must be greeter than 0");
        uint256 DevFeeAmount;
        if (balanceOf(address(this)) >= maxSwapTokens) {
            DevFeeAmount = amount * (1) / (2);
        } else {DevFeeAmount = amount * (1) / (2);
        }
        DevWallet.transfer(DevFeeAmount);
        MarketingWallet.transfer(amount - (DevFeeAmount));
    }
  
   function removeMaxTxLimit() external onlyOwner {
       maxTxAmount = _tTotal;
       }
  
   function changeFee(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 40 && _sellFee <= 40, "revert wrong fee settings");
        buyTaxes = _buyFee;
        sellTaxes = _sellFee;
     }
   
    function excludeFromFee(address account) external onlyOwner {
      require(_isExcludedFromFee[account] != true,"Account is already excluded");
       _isExcludedFromFee[account] = true;
    emit ExcludeFromFeeUpdated(account);
   }
   
    function includeFromFee(address account) external onlyOwner {
         require(_isExcludedFromFee[account] != false, "Account is already included");
        _isExcludedFromFee[account] = false;
     emit includeFromFeeUpdated(account);
    }
    
    function manualSwap() external onlyOwner() {
        uint256 tokenBalance = balanceOf(address(this));
        if(tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if(ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }
   
    function setBlacklist(address _address, bool _status) external onlyOwner {
        isBlacklisted[_address] = _status;
    }
    
    function setTrading() external onlyOwner() {
        require(!tradeEnable,"trading is already open");
        _SwapBackEnable = true;
         tradeEnable = true;
       emit TradingOpenUpdated();
    }
    
    receive() external payable {}
   
    function recoverERC20FromContract(address _tokenAddy, uint256 _amount) external onlyOwner {
        require(_tokenAddy != address(this), "Owner can't claim contract's balance of its own tokens");
        require(_amount > 0, "Amount should be greater than zero");
        require(_amount <= IERC20(_tokenAddy).balanceOf(address(this)), "Insufficient Amount");
        IERC20(_tokenAddy).transfer(MarketingWallet, _amount);
      emit ERC20TokensRecovered(_amount); 
    }
   
    function recoverETHfromContract() external {
        uint256 contractETHBalance = address(this).balance;
        require(contractETHBalance > 0, "Amount should be greater than zero");
        require(contractETHBalance <= address(this).balance, "Insufficient Amount");
        payable(address(MarketingWallet)).transfer(contractETHBalance);
      emit ETHBalanceRecovered();
    }
}

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":"uint256","name":"_amount","type":"uint256"}],"name":"ERC20TokensRecovered","type":"event"},{"anonymous":false,"inputs":[],"name":"ETHBalanceRecovered","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_newWallet","type":"address"}],"name":"FeesRecieverUpdated","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":"bool","name":"state","type":"bool"}],"name":"SwapBackSettingUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"minToken","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"maxToken","type":"uint256"}],"name":"SwapThreshouldUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpenUpdated","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":true,"internalType":"address","name":"account","type":"address"}],"name":"includeFromFeeUpdated","type":"event"},{"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":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddy","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverERC20FromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverETHfromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeMaxTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTrading","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":[],"name":"tradeEnable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000a86565b620186a062000024919062000ad6565b6007556009600a62000037919062000a86565b6216e36062000047919062000ad6565b6008556009600a6200005a919062000a86565b6216e3606200006a919062000ad6565b600955601e600a55602d600b555f600c555f600e60146101000a81548160ff0219169083151502179055505f600e60156101000a81548160ff0219169083151502179055505f600e60166101000a81548160ff021916908315150217905550348015620000d5575f80fd5b505f620000e7620008ed60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060384603620001e6577310ed43c718714eb63d5aa57b78b54704e256024e600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035d565b6001461480620001f65750600546145b156200025657737a250d5630b4cf539739df2c5dacb4c659f2488d600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035c565b61a4b14603620002ba57731b02da8cb0d097eb8d57a175b88c7d8b47997506600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035b565b606146036200031d5773d99d1c33f9fc3444f8101754abc46c52416550d1600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200035a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003519062000b7e565b60405180910390fd5b5b5b5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ee919062000c03565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000475573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200049b919062000c03565b6040518363ffffffff1660e01b8152600401620004ba92919062000c44565b6020604051808303815f875af1158015620004d7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004fd919062000c03565b600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073207746cc2e397724c534add8bd5174af736cebfc60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736734e82123d210b8b8b52b1ec9bba082e3f9439560065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620005f4919062000a86565b6305f5e10062000605919062000ad6565b60015f62000618620008ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160045f6200066a620008ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000861620008ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620008bf919062000a86565b6305f5e100620008d0919062000ad6565b604051620008df919062000c80565b60405180910390a362000c9b565b5f33905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200097e57808604811115620009565762000955620008f4565b5b6001851615620009665780820291505b8081029050620009768562000921565b945062000936565b94509492505050565b5f8262000998576001905062000a6a565b81620009a7575f905062000a6a565b8160018114620009c05760028114620009cb5762000a01565b600191505062000a6a565b60ff841115620009e057620009df620008f4565b5b8360020a915084821115620009fa57620009f9620008f4565b5b5062000a6a565b5060208310610133831016604e8410600b841016171562000a3b5782820a90508381111562000a355762000a34620008f4565b5b62000a6a565b62000a4a84848460016200092d565b9250905081840481111562000a645762000a63620008f4565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000a928262000a71565b915062000a9f8362000a7a565b925062000ace7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000987565b905092915050565b5f62000ae28262000a71565b915062000aef8362000a71565b925082820262000aff8162000a71565b9150828204841483151762000b195762000b18620008f4565b5b5092915050565b5f82825260208201905092915050565b7f57726f6e6720436861696e2049640000000000000000000000000000000000005f82015250565b5f62000b66600e8362000b20565b915062000b738262000b30565b602082019050919050565b5f6020820190508181035f83015262000b978162000b58565b9050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bcd8262000ba2565b9050919050565b62000bdf8162000bc1565b811462000bea575f80fd5b50565b5f8151905062000bfd8162000bd4565b92915050565b5f6020828403121562000c1b5762000c1a62000b9e565b5b5f62000c2a8482850162000bed565b91505092915050565b62000c3e8162000bc1565b82525050565b5f60408201905062000c595f83018562000c33565b62000c68602083018462000c33565b9392505050565b62000c7a8162000a71565b82525050565b5f60208201905062000c955f83018462000c6f565b92915050565b613c5d8062000ca95f395ff3fe608060405260043610610169575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063e3ca2d6511610063578063e3ca2d65146104d6578063f2fde38b146104fe578063f87dc2c614610526578063ff5118281461055057610170565b8063a9059cbb14610448578063ce831ed514610484578063dd62ed3e1461049a57610170565b8063715018a6146103745780637c519ffb1461038a57806385141a77146103a05780638c0b5e22146103ca5780638da5cb5b146103f457806395d89b411461041e57610170565b8063313ce56711610122578063313ce56714610292578063437823ec146102bc5780634415fb61146102e457806351bc3c85146102fa5780636dff2eeb1461031057806370a082311461033857610170565b806306fdde0314610174578063095ea7b31461019e578063153b0d1e146101da5780631694505e1461020257806318160ddd1461022c57806323b872dd1461025657610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610578565b60405161019591906129a1565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190612a52565b6105b5565b6040516101d19190612aaa565b60405180910390f35b3480156101e5575f80fd5b5061020060048036038101906101fb9190612aed565b6105d2565b005b34801561020d575f80fd5b506102166106be565b6040516102239190612b86565b60405180910390f35b348015610237575f80fd5b506102406106e3565b60405161024d9190612bae565b60405180910390f35b348015610261575f80fd5b5061027c60048036038101906102779190612bc7565b610706565b6040516102899190612aaa565b60405180910390f35b34801561029d575f80fd5b506102a6610801565b6040516102b39190612c32565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612c4b565b610809565b005b3480156102ef575f80fd5b506102f86109c8565b005b348015610305575f80fd5b5061030e610a81565b005b34801561031b575f80fd5b5061033660048036038101906103319190612a52565b610b4d565b005b348015610343575f80fd5b5061035e60048036038101906103599190612c4b565b610e19565b60405161036b9190612bae565b60405180910390f35b34801561037f575f80fd5b50610388610e5f565b005b348015610395575f80fd5b5061039e610fad565b005b3480156103ab575f80fd5b506103b46110f5565b6040516103c19190612c85565b60405180910390f35b3480156103d5575f80fd5b506103de6110fb565b6040516103eb9190612bae565b60405180910390f35b3480156103ff575f80fd5b50610408611101565b6040516104159190612c85565b60405180910390f35b348015610429575f80fd5b50610432611128565b60405161043f91906129a1565b60405180910390f35b348015610453575f80fd5b5061046e60048036038101906104699190612a52565b611165565b60405161047b9190612aaa565b60405180910390f35b34801561048f575f80fd5b50610498611182565b005b3480156104a5575f80fd5b506104c060048036038101906104bb9190612c9e565b61129f565b6040516104cd9190612bae565b60405180910390f35b3480156104e1575f80fd5b506104fc60048036038101906104f79190612cdc565b611321565b005b348015610509575f80fd5b50610524600480360381019061051f9190612c4b565b611418565b005b348015610531575f80fd5b5061053a611526565b6040516105479190612aaa565b60405180910390f35b34801561055b575f80fd5b5061057660048036038101906105719190612c4b565b611539565b005b60606040518060400160405280600681526020017f436f646541490000000000000000000000000000000000000000000000000000815250905090565b5f6105c86105c16116f6565b84846116fd565b6001905092915050565b6105da6116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d90612d64565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009600a6106f29190612ede565b6305f5e1006107019190612f28565b905090565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61074e6116f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c490612fd9565b60405180910390fd5b6107d88585856118c0565b6107f5856107e46116f6565b85846107f09190612ff7565b6116fd565b60019150509392505050565b5f6009905090565b6108116116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089490612d64565b60405180910390fd5b6001151560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361092d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092490613074565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e60405160405180910390a250565b6109d06116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5390612d64565b60405180910390fd5b6009600a610a6a9190612ede565b6305f5e100610a799190612f28565b600981905550565b610a896116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c90612d64565b60405180910390fd5b5f610b1f30610e19565b90505f811115610b3357610b3281612428565b5b5f4790505f811115610b4957610b48816126d5565b5b5050565b610b556116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890612d64565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690613102565b60405180910390fd5b5f8111610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890613190565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cca9190612c85565b602060405180830381865afa158015610ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0991906131c2565b811115610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290613237565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610da7929190613275565b6020604051808303815f875af1158015610dc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de791906132b0565b50807fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2260405160405180910390a25050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e676116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea90612d64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fb56116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890612d64565b60405180910390fd5b600e60149054906101000a900460ff1615611091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108890613325565b60405180910390fd5b6001600e60156101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff0219169083151502179055507f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93560405160405180910390a1565b61dead81565b60095481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f434f444149000000000000000000000000000000000000000000000000000000815250905090565b5f6111786111716116f6565b84846118c0565b6001905092915050565b5f4790505f81116111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613190565b60405180910390fd5b4781111561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290613237565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561126f573d5f803e3d5ffd5b507fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767560405160405180910390a150565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113296116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90612d64565b60405180910390fd5b602882111580156113c7575060288111155b611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd9061338d565b60405180910390fd5b81600a8190555080600b819055505050565b6114206116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612d64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361151a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115119061341b565b60405180910390fd5b6115238161283e565b50565b600e60149054906101000a900460ff1681565b6115416116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c490612d64565b60405180910390fd5b5f151560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390613483565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e60405160405180910390a250565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290613511565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d09061359f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118b39190612bae565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061362d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906136bb565b60405180910390fd5b5f81116119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613749565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a7c575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab2906137b1565b60405180910390fd5b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b5a575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bcb57600e60149054906101000a900460ff16611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba590613819565b60405180910390fd5b6064600a5483611bbe9190612f28565b611bc89190613864565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c66575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611c6f575f90505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d185750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6b575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e2557600954821115611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac906138de565b60405180910390fd5b60095482611dc285610e19565b611dcc91906138fc565b1115611e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0490613979565b60405180910390fd5b600c5f815480929190611e1f90613997565b91905055505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ec9575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f1c575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f6757600954821115611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d906138de565b60405180910390fd5b5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fef57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612042575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612095575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120b7576064600b54836120aa9190612f28565b6120b49190613864565b90505b5f6120c130610e19565b9050600e60169054906101000a900460ff1615801561212d5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121455750600e60159054906101000a900460ff165b8015612152575060075481115b801561216057506001600c54115b1561219a5761218261217d84612178846008546128ff565b6128ff565b612428565b5f4790505f81111561219857612197476126d5565b5b505b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121e39190612ff7565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081836122309190612ff7565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227891906138fc565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84866123149190612ff7565b6040516123219190612bae565b60405180910390a35f821115612421578160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461237a91906138fc565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124189190612bae565b60405180910390a35b5050505050565b6001600e60166101000a81548160ff0219169083151502179055505f8111612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c90613a28565b60405180910390fd5b5f600267ffffffffffffffff8111156124a1576124a0613a46565b5b6040519080825280602002602001820160405280156124cf5781602001602082028036833780820191505090505b50905030815f815181106124e6576124e5613a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561258a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ae9190613ab4565b816001815181106125c2576125c1613a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061262830600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116fd565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161268a959493929190613bcf565b5f604051808303815f87803b1580156126a1575f80fd5b505af11580156126b3573d5f803e3d5ffd5b50505050505f600e60166101000a81548160ff02191690831515021790555050565b5f8111612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e90613a28565b60405180910390fd5b5f60085461272430610e19565b106127495760026001836127389190612f28565b6127429190613864565b9050612765565b60026001836127589190612f28565b6127629190613864565b90505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156127c9573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82846128119190612ff7565b90811502906040515f60405180830381858888f19350505050158015612839573d5f803e3d5ffd5b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81831161290d578261290f565b815b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561294e578082015181840152602081019050612933565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61297382612917565b61297d8185612921565b935061298d818560208601612931565b61299681612959565b840191505092915050565b5f6020820190508181035f8301526129b98184612969565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129ee826129c5565b9050919050565b6129fe816129e4565b8114612a08575f80fd5b50565b5f81359050612a19816129f5565b92915050565b5f819050919050565b612a3181612a1f565b8114612a3b575f80fd5b50565b5f81359050612a4c81612a28565b92915050565b5f8060408385031215612a6857612a676129c1565b5b5f612a7585828601612a0b565b9250506020612a8685828601612a3e565b9150509250929050565b5f8115159050919050565b612aa481612a90565b82525050565b5f602082019050612abd5f830184612a9b565b92915050565b612acc81612a90565b8114612ad6575f80fd5b50565b5f81359050612ae781612ac3565b92915050565b5f8060408385031215612b0357612b026129c1565b5b5f612b1085828601612a0b565b9250506020612b2185828601612ad9565b9150509250929050565b5f819050919050565b5f612b4e612b49612b44846129c5565b612b2b565b6129c5565b9050919050565b5f612b5f82612b34565b9050919050565b5f612b7082612b55565b9050919050565b612b8081612b66565b82525050565b5f602082019050612b995f830184612b77565b92915050565b612ba881612a1f565b82525050565b5f602082019050612bc15f830184612b9f565b92915050565b5f805f60608486031215612bde57612bdd6129c1565b5b5f612beb86828701612a0b565b9350506020612bfc86828701612a0b565b9250506040612c0d86828701612a3e565b9150509250925092565b5f60ff82169050919050565b612c2c81612c17565b82525050565b5f602082019050612c455f830184612c23565b92915050565b5f60208284031215612c6057612c5f6129c1565b5b5f612c6d84828501612a0b565b91505092915050565b612c7f816129e4565b82525050565b5f602082019050612c985f830184612c76565b92915050565b5f8060408385031215612cb457612cb36129c1565b5b5f612cc185828601612a0b565b9250506020612cd285828601612a0b565b9150509250929050565b5f8060408385031215612cf257612cf16129c1565b5b5f612cff85828601612a3e565b9250506020612d1085828601612a3e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d4e602083612921565b9150612d5982612d1a565b602082019050919050565b5f6020820190508181035f830152612d7b81612d42565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612e0457808604811115612de057612ddf612d82565b5b6001851615612def5780820291505b8081029050612dfd85612daf565b9450612dc4565b94509492505050565b5f82612e1c5760019050612ed7565b81612e29575f9050612ed7565b8160018114612e3f5760028114612e4957612e78565b6001915050612ed7565b60ff841115612e5b57612e5a612d82565b5b8360020a915084821115612e7257612e71612d82565b5b50612ed7565b5060208310610133831016604e8410600b8410161715612ead5782820a905083811115612ea857612ea7612d82565b5b612ed7565b612eba8484846001612dbb565b92509050818404811115612ed157612ed0612d82565b5b81810290505b9392505050565b5f612ee882612a1f565b9150612ef383612c17565b9250612f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e0d565b905092915050565b5f612f3282612a1f565b9150612f3d83612a1f565b9250828202612f4b81612a1f565b91508282048414831517612f6257612f61612d82565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612fc3602883612921565b9150612fce82612f69565b604082019050919050565b5f6020820190508181035f830152612ff081612fb7565b9050919050565b5f61300182612a1f565b915061300c83612a1f565b925082820390508181111561302457613023612d82565b5b92915050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f61305e601b83612921565b91506130698261302a565b602082019050919050565b5f6020820190508181035f83015261308b81613052565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c5f8201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b5f6130ec603683612921565b91506130f782613092565b604082019050919050565b5f6020820190508181035f830152613119816130e0565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f61317a602283612921565b915061318582613120565b604082019050919050565b5f6020820190508181035f8301526131a78161316e565b9050919050565b5f815190506131bc81612a28565b92915050565b5f602082840312156131d7576131d66129c1565b5b5f6131e4848285016131ae565b91505092915050565b7f496e73756666696369656e7420416d6f756e74000000000000000000000000005f82015250565b5f613221601383612921565b915061322c826131ed565b602082019050919050565b5f6020820190508181035f83015261324e81613215565b9050919050565b5f61325f82612b55565b9050919050565b61326f81613255565b82525050565b5f6040820190506132885f830185613266565b6132956020830184612b9f565b9392505050565b5f815190506132aa81612ac3565b92915050565b5f602082840312156132c5576132c46129c1565b5b5f6132d28482850161329c565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61330f601783612921565b915061331a826132db565b602082019050919050565b5f6020820190508181035f83015261333c81613303565b9050919050565b7f7265766572742077726f6e67206665652073657474696e6773000000000000005f82015250565b5f613377601983612921565b915061338282613343565b602082019050919050565b5f6020820190508181035f8301526133a48161336b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613405602683612921565b9150613410826133ab565b604082019050919050565b5f6020820190508181035f830152613432816133f9565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c7564656400000000005f82015250565b5f61346d601b83612921565b915061347882613439565b602082019050919050565b5f6020820190508181035f83015261349a81613461565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134fb602483612921565b9150613506826134a1565b604082019050919050565b5f6020820190508181035f830152613528816134ef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613589602283612921565b91506135948261352f565b604082019050919050565b5f6020820190508181035f8301526135b68161357d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613617602583612921565b9150613622826135bd565b604082019050919050565b5f6020820190508181035f8301526136448161360b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136a5602383612921565b91506136b08261364b565b604082019050919050565b5f6020820190508181035f8301526136d281613699565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613733602983612921565b915061373e826136d9565b604082019050919050565b5f6020820190508181035f83015261376081613727565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e73000000000000005f82015250565b5f61379b601983612921565b91506137a682613767565b602082019050919050565b5f6020820190508181035f8301526137c88161378f565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613803601383612921565b915061380e826137cf565b602082019050919050565b5f6020820190508181035f830152613830816137f7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61386e82612a1f565b915061387983612a1f565b92508261388957613888613837565b5b828204905092915050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6138c8601983612921565b91506138d382613894565b602082019050919050565b5f6020820190508181035f8301526138f5816138bc565b9050919050565b5f61390682612a1f565b915061391183612a1f565b925082820190508082111561392957613928612d82565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613963601a83612921565b915061396e8261392f565b602082019050919050565b5f6020820190508181035f83015261399081613957565b9050919050565b5f6139a182612a1f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139d3576139d2612d82565b5b600182019050919050565b7f616d6f756e74206d7573742062652067726565746572207468616e20300000005f82015250565b5f613a12601d83612921565b9150613a1d826139de565b602082019050919050565b5f6020820190508181035f830152613a3f81613a06565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613aae816129f5565b92915050565b5f60208284031215613ac957613ac86129c1565b5b5f613ad684828501613aa0565b91505092915050565b5f819050919050565b5f613b02613afd613af884613adf565b612b2b565b612a1f565b9050919050565b613b1281613ae8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b4a816129e4565b82525050565b5f613b5b8383613b41565b60208301905092915050565b5f602082019050919050565b5f613b7d82613b18565b613b878185613b22565b9350613b9283613b32565b805f5b83811015613bc2578151613ba98882613b50565b9750613bb483613b67565b925050600181019050613b95565b5085935050505092915050565b5f60a082019050613be25f830188612b9f565b613bef6020830187613b09565b8181036040830152613c018186613b73565b9050613c106060830185612c76565b613c1d6080830184612b9f565b969550505050505056fea2646970667358221220658fabc56d9733b7848c76daddca62eb461253b8996c29f4a32749ef4cd9e72564736f6c63430008140033

Deployed Bytecode

0x608060405260043610610169575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063e3ca2d6511610063578063e3ca2d65146104d6578063f2fde38b146104fe578063f87dc2c614610526578063ff5118281461055057610170565b8063a9059cbb14610448578063ce831ed514610484578063dd62ed3e1461049a57610170565b8063715018a6146103745780637c519ffb1461038a57806385141a77146103a05780638c0b5e22146103ca5780638da5cb5b146103f457806395d89b411461041e57610170565b8063313ce56711610122578063313ce56714610292578063437823ec146102bc5780634415fb61146102e457806351bc3c85146102fa5780636dff2eeb1461031057806370a082311461033857610170565b806306fdde0314610174578063095ea7b31461019e578063153b0d1e146101da5780631694505e1461020257806318160ddd1461022c57806323b872dd1461025657610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610578565b60405161019591906129a1565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf9190612a52565b6105b5565b6040516101d19190612aaa565b60405180910390f35b3480156101e5575f80fd5b5061020060048036038101906101fb9190612aed565b6105d2565b005b34801561020d575f80fd5b506102166106be565b6040516102239190612b86565b60405180910390f35b348015610237575f80fd5b506102406106e3565b60405161024d9190612bae565b60405180910390f35b348015610261575f80fd5b5061027c60048036038101906102779190612bc7565b610706565b6040516102899190612aaa565b60405180910390f35b34801561029d575f80fd5b506102a6610801565b6040516102b39190612c32565b60405180910390f35b3480156102c7575f80fd5b506102e260048036038101906102dd9190612c4b565b610809565b005b3480156102ef575f80fd5b506102f86109c8565b005b348015610305575f80fd5b5061030e610a81565b005b34801561031b575f80fd5b5061033660048036038101906103319190612a52565b610b4d565b005b348015610343575f80fd5b5061035e60048036038101906103599190612c4b565b610e19565b60405161036b9190612bae565b60405180910390f35b34801561037f575f80fd5b50610388610e5f565b005b348015610395575f80fd5b5061039e610fad565b005b3480156103ab575f80fd5b506103b46110f5565b6040516103c19190612c85565b60405180910390f35b3480156103d5575f80fd5b506103de6110fb565b6040516103eb9190612bae565b60405180910390f35b3480156103ff575f80fd5b50610408611101565b6040516104159190612c85565b60405180910390f35b348015610429575f80fd5b50610432611128565b60405161043f91906129a1565b60405180910390f35b348015610453575f80fd5b5061046e60048036038101906104699190612a52565b611165565b60405161047b9190612aaa565b60405180910390f35b34801561048f575f80fd5b50610498611182565b005b3480156104a5575f80fd5b506104c060048036038101906104bb9190612c9e565b61129f565b6040516104cd9190612bae565b60405180910390f35b3480156104e1575f80fd5b506104fc60048036038101906104f79190612cdc565b611321565b005b348015610509575f80fd5b50610524600480360381019061051f9190612c4b565b611418565b005b348015610531575f80fd5b5061053a611526565b6040516105479190612aaa565b60405180910390f35b34801561055b575f80fd5b5061057660048036038101906105719190612c4b565b611539565b005b60606040518060400160405280600681526020017f436f646541490000000000000000000000000000000000000000000000000000815250905090565b5f6105c86105c16116f6565b84846116fd565b6001905092915050565b6105da6116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065d90612d64565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009600a6106f29190612ede565b6305f5e1006107019190612f28565b905090565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61074e6116f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156107cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c490612fd9565b60405180910390fd5b6107d88585856118c0565b6107f5856107e46116f6565b85846107f09190612ff7565b6116fd565b60019150509392505050565b5f6009905090565b6108116116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089490612d64565b60405180910390fd5b6001151560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361092d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092490613074565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f7168e8adb718597b3ac83e2dfe415bea8ebaabb57fe933ffac2e0ed93b80718e60405160405180910390a250565b6109d06116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5390612d64565b60405180910390fd5b6009600a610a6a9190612ede565b6305f5e100610a799190612f28565b600981905550565b610a896116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0c90612d64565b60405180910390fd5b5f610b1f30610e19565b90505f811115610b3357610b3281612428565b5b5f4790505f811115610b4957610b48816126d5565b5b5050565b610b556116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610be1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd890612d64565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4690613102565b60405180910390fd5b5f8111610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8890613190565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cca9190612c85565b602060405180830381865afa158015610ce5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d0991906131c2565b811115610d4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4290613237565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610da7929190613275565b6020604051808303815f875af1158015610dc3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610de791906132b0565b50807fc3cafad8c1a78aa542c18679d54d2e14cf1f08b516ac12071dcf9fd2d3701c2260405160405180910390a25050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610e676116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ef3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eea90612d64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610fb56116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890612d64565b60405180910390fd5b600e60149054906101000a900460ff1615611091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108890613325565b60405180910390fd5b6001600e60156101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff0219169083151502179055507f0d151bf744092c3011c9f50766da412cca73acdbcaa74b879a5858adc258f93560405160405180910390a1565b61dead81565b60095481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f434f444149000000000000000000000000000000000000000000000000000000815250905090565b5f6111786111716116f6565b84846118c0565b6001905092915050565b5f4790505f81116111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90613190565b60405180910390fd5b4781111561120b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120290613237565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561126f573d5f803e3d5ffd5b507fc680f238873c988c7dc872ec40caca9d70edfe000c3d44a1b9410684db93767560405160405180910390a150565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113296116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90612d64565b60405180910390fd5b602882111580156113c7575060288111155b611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd9061338d565b60405180910390fd5b81600a8190555080600b819055505050565b6114206116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612d64565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361151a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115119061341b565b60405180910390fd5b6115238161283e565b50565b600e60149054906101000a900460ff1681565b6115416116f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c490612d64565b60405180910390fd5b5f151560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615150361165c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165390613483565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167fdff643e1b752e1138794c958b6f565e4f003ba18d45383a40b582de82ced091e60405160405180910390a250565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290613511565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d09061359f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118b39190612bae565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119259061362d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906136bb565b60405180910390fd5b5f81116119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613749565b60405180910390fd5b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a7c575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611abb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab2906137b1565b60405180910390fd5b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b5a575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bcb57600e60149054906101000a900460ff16611bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba590613819565b60405180910390fd5b6064600a5483611bbe9190612f28565b611bc89190613864565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611c66575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611c6f575f90505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d185750600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d6b575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e2557600954821115611db5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dac906138de565b60405180910390fd5b60095482611dc285610e19565b611dcc91906138fc565b1115611e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0490613979565b60405180910390fd5b600c5f815480929190611e1f90613997565b91905055505b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ec9575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611f1c575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f6757600954821115611f66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5d906138de565b60405180910390fd5b5b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fef57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612042575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612095575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120b7576064600b54836120aa9190612f28565b6120b49190613864565b90505b5f6120c130610e19565b9050600e60169054906101000a900460ff1615801561212d5750600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156121455750600e60159054906101000a900460ff165b8015612152575060075481115b801561216057506001600c54115b1561219a5761218261217d84612178846008546128ff565b6128ff565b612428565b5f4790505f81111561219857612197476126d5565b5b505b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121e39190612ff7565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081836122309190612ff7565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461227891906138fc565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84866123149190612ff7565b6040516123219190612bae565b60405180910390a35f821115612421578160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461237a91906138fc565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516124189190612bae565b60405180910390a35b5050505050565b6001600e60166101000a81548160ff0219169083151502179055505f8111612485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247c90613a28565b60405180910390fd5b5f600267ffffffffffffffff8111156124a1576124a0613a46565b5b6040519080825280602002602001820160405280156124cf5781602001602082028036833780820191505090505b50905030815f815181106124e6576124e5613a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561258a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125ae9190613ab4565b816001815181106125c2576125c1613a73565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061262830600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116fd565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161268a959493929190613bcf565b5f604051808303815f87803b1580156126a1575f80fd5b505af11580156126b3573d5f803e3d5ffd5b50505050505f600e60166101000a81548160ff02191690831515021790555050565b5f8111612717576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270e90613a28565b60405180910390fd5b5f60085461272430610e19565b106127495760026001836127389190612f28565b6127429190613864565b9050612765565b60026001836127589190612f28565b6127629190613864565b90505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156127c9573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc82846128119190612ff7565b90811502906040515f60405180830381858888f19350505050158015612839573d5f803e3d5ffd5b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81831161290d578261290f565b815b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561294e578082015181840152602081019050612933565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61297382612917565b61297d8185612921565b935061298d818560208601612931565b61299681612959565b840191505092915050565b5f6020820190508181035f8301526129b98184612969565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6129ee826129c5565b9050919050565b6129fe816129e4565b8114612a08575f80fd5b50565b5f81359050612a19816129f5565b92915050565b5f819050919050565b612a3181612a1f565b8114612a3b575f80fd5b50565b5f81359050612a4c81612a28565b92915050565b5f8060408385031215612a6857612a676129c1565b5b5f612a7585828601612a0b565b9250506020612a8685828601612a3e565b9150509250929050565b5f8115159050919050565b612aa481612a90565b82525050565b5f602082019050612abd5f830184612a9b565b92915050565b612acc81612a90565b8114612ad6575f80fd5b50565b5f81359050612ae781612ac3565b92915050565b5f8060408385031215612b0357612b026129c1565b5b5f612b1085828601612a0b565b9250506020612b2185828601612ad9565b9150509250929050565b5f819050919050565b5f612b4e612b49612b44846129c5565b612b2b565b6129c5565b9050919050565b5f612b5f82612b34565b9050919050565b5f612b7082612b55565b9050919050565b612b8081612b66565b82525050565b5f602082019050612b995f830184612b77565b92915050565b612ba881612a1f565b82525050565b5f602082019050612bc15f830184612b9f565b92915050565b5f805f60608486031215612bde57612bdd6129c1565b5b5f612beb86828701612a0b565b9350506020612bfc86828701612a0b565b9250506040612c0d86828701612a3e565b9150509250925092565b5f60ff82169050919050565b612c2c81612c17565b82525050565b5f602082019050612c455f830184612c23565b92915050565b5f60208284031215612c6057612c5f6129c1565b5b5f612c6d84828501612a0b565b91505092915050565b612c7f816129e4565b82525050565b5f602082019050612c985f830184612c76565b92915050565b5f8060408385031215612cb457612cb36129c1565b5b5f612cc185828601612a0b565b9250506020612cd285828601612a0b565b9150509250929050565b5f8060408385031215612cf257612cf16129c1565b5b5f612cff85828601612a3e565b9250506020612d1085828601612a3e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d4e602083612921565b9150612d5982612d1a565b602082019050919050565b5f6020820190508181035f830152612d7b81612d42565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612e0457808604811115612de057612ddf612d82565b5b6001851615612def5780820291505b8081029050612dfd85612daf565b9450612dc4565b94509492505050565b5f82612e1c5760019050612ed7565b81612e29575f9050612ed7565b8160018114612e3f5760028114612e4957612e78565b6001915050612ed7565b60ff841115612e5b57612e5a612d82565b5b8360020a915084821115612e7257612e71612d82565b5b50612ed7565b5060208310610133831016604e8410600b8410161715612ead5782820a905083811115612ea857612ea7612d82565b5b612ed7565b612eba8484846001612dbb565b92509050818404811115612ed157612ed0612d82565b5b81810290505b9392505050565b5f612ee882612a1f565b9150612ef383612c17565b9250612f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e0d565b905092915050565b5f612f3282612a1f565b9150612f3d83612a1f565b9250828202612f4b81612a1f565b91508282048414831517612f6257612f61612d82565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f612fc3602883612921565b9150612fce82612f69565b604082019050919050565b5f6020820190508181035f830152612ff081612fb7565b9050919050565b5f61300182612a1f565b915061300c83612a1f565b925082820390508181111561302457613023612d82565b5b92915050565b7f4163636f756e7420697320616c7265616479206578636c7564656400000000005f82015250565b5f61305e601b83612921565b91506130698261302a565b602082019050919050565b5f6020820190508181035f83015261308b81613052565b9050919050565b7f4f776e65722063616e277420636c61696d20636f6e747261637427732062616c5f8201527f616e6365206f6620697473206f776e20746f6b656e7300000000000000000000602082015250565b5f6130ec603683612921565b91506130f782613092565b604082019050919050565b5f6020820190508181035f830152613119816130e0565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f61317a602283612921565b915061318582613120565b604082019050919050565b5f6020820190508181035f8301526131a78161316e565b9050919050565b5f815190506131bc81612a28565b92915050565b5f602082840312156131d7576131d66129c1565b5b5f6131e4848285016131ae565b91505092915050565b7f496e73756666696369656e7420416d6f756e74000000000000000000000000005f82015250565b5f613221601383612921565b915061322c826131ed565b602082019050919050565b5f6020820190508181035f83015261324e81613215565b9050919050565b5f61325f82612b55565b9050919050565b61326f81613255565b82525050565b5f6040820190506132885f830185613266565b6132956020830184612b9f565b9392505050565b5f815190506132aa81612ac3565b92915050565b5f602082840312156132c5576132c46129c1565b5b5f6132d28482850161329c565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61330f601783612921565b915061331a826132db565b602082019050919050565b5f6020820190508181035f83015261333c81613303565b9050919050565b7f7265766572742077726f6e67206665652073657474696e6773000000000000005f82015250565b5f613377601983612921565b915061338282613343565b602082019050919050565b5f6020820190508181035f8301526133a48161336b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613405602683612921565b9150613410826133ab565b604082019050919050565b5f6020820190508181035f830152613432816133f9565b9050919050565b7f4163636f756e7420697320616c726561647920696e636c7564656400000000005f82015250565b5f61346d601b83612921565b915061347882613439565b602082019050919050565b5f6020820190508181035f83015261349a81613461565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134fb602483612921565b9150613506826134a1565b604082019050919050565b5f6020820190508181035f830152613528816134ef565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613589602283612921565b91506135948261352f565b604082019050919050565b5f6020820190508181035f8301526135b68161357d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613617602583612921565b9150613622826135bd565b604082019050919050565b5f6020820190508181035f8301526136448161360b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136a5602383612921565b91506136b08261364b565b604082019050919050565b5f6020820190508181035f8301526136d281613699565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613733602983612921565b915061373e826136d9565b604082019050919050565b5f6020820190508181035f83015261376081613727565b9050919050565b7f596f752063616e2774207472616e7366657220746f6b656e73000000000000005f82015250565b5f61379b601983612921565b91506137a682613767565b602082019050919050565b5f6020820190508181035f8301526137c88161378f565b9050919050565b7f54726164696e67206e6f7420656e61626c6564000000000000000000000000005f82015250565b5f613803601383612921565b915061380e826137cf565b602082019050919050565b5f6020820190508181035f830152613830816137f7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61386e82612a1f565b915061387983612a1f565b92508261388957613888613837565b5b828204905092915050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6138c8601983612921565b91506138d382613894565b602082019050919050565b5f6020820190508181035f8301526138f5816138bc565b9050919050565b5f61390682612a1f565b915061391183612a1f565b925082820190508082111561392957613928612d82565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613963601a83612921565b915061396e8261392f565b602082019050919050565b5f6020820190508181035f83015261399081613957565b9050919050565b5f6139a182612a1f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139d3576139d2612d82565b5b600182019050919050565b7f616d6f756e74206d7573742062652067726565746572207468616e20300000005f82015250565b5f613a12601d83612921565b9150613a1d826139de565b602082019050919050565b5f6020820190508181035f830152613a3f81613a06565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613aae816129f5565b92915050565b5f60208284031215613ac957613ac86129c1565b5b5f613ad684828501613aa0565b91505092915050565b5f819050919050565b5f613b02613afd613af884613adf565b612b2b565b612a1f565b9050919050565b613b1281613ae8565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b4a816129e4565b82525050565b5f613b5b8383613b41565b60208301905092915050565b5f602082019050919050565b5f613b7d82613b18565b613b878185613b22565b9350613b9283613b32565b805f5b83811015613bc2578151613ba98882613b50565b9750613bb483613b67565b925050600181019050613b95565b5085935050505092915050565b5f60a082019050613be25f830188612b9f565b613bef6020830187613b09565b8181036040830152613c018186613b73565b9050613c106060830185612c76565b613c1d6080830184612b9f565b969550505050505056fea2646970667358221220658fabc56d9733b7848c76daddca62eb461253b8996c29f4a32749ef4cd9e72564736f6c63430008140033

Deployed Bytecode Sourcemap

3042:10742:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6154:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7086:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12511:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4008:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6425:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7253:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6336:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11666:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11335:89;;;;;;;;;;;;;:::i;:::-;;12170:330;;;;;;;;;;;;;:::i;:::-;;12907:477;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6526:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2127:148;;;;;;;;;;;;;:::i;:::-;;12648:207;;;;;;;;;;;;;:::i;:::-;;3335:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3835:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1511:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6243:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6764:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13395:386;;;;;;;;;;;;;:::i;:::-;;6937:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11433:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1721:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4092:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11913:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6154:83;6191:13;6224:5;;;;;;;;;;;;;;;;;6217:12;;6154:83;:::o;7086:161::-;7161:4;7178:39;7187:12;:10;:12::i;:::-;7201:7;7210:6;7178:8;:39::i;:::-;7235:4;7228:11;;7086:161;;;;:::o;12511:125::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12621:7:::1;12595:13;:23;12609:8;12595:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;12511:125:::0;;:::o;4008:41::-;;;;;;;;;;;;;:::o;6425:95::-;6478:7;3542:1;3598:2;:13;;;;:::i;:::-;3586:9;:25;;;;:::i;:::-;6498:14;;6425:95;:::o;7253:410::-;7351:4;7368:24;7395:11;:19;7407:6;7395:19;;;;;;;;;;;;;;;:33;7415:12;:10;:12::i;:::-;7395:33;;;;;;;;;;;;;;;;7368:60;;7467:6;7447:16;:26;;7439:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7529:36;7539:6;7547:9;7558:6;7529:9;:36::i;:::-;7576:57;7585:6;7593:12;:10;:12::i;:::-;7626:6;7607:16;:25;;;;:::i;:::-;7576:8;:57::i;:::-;7651:4;7644:11;;;7253:410;;;;;:::o;6336:83::-;6377:5;3542:1;6395:16;;6336:83;:::o;11666:236::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11774:4:::1;11743:35;;:18;:27;11762:7;11743:27;;;;;;;;;;;;;;;;;;;;;;;;;:35;;::::0;11735:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11849:4;11819:18;:27;11838:7;11819:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;11887:7;11865:30;;;;;;;;;;;;11666:236:::0;:::o;11335:89::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3542:1:::1;3598:2;:13;;;;:::i;:::-;3586:9;:25;;;;:::i;:::-;11392:11;:21;;;;11335:89::o:0;12170:330::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12224:20:::1;12247:24;12265:4;12247:9;:24::i;:::-;12224:47;;12300:1;12285:12;:16;12282:78;;;12318:30;12335:12;12318:16;:30::i;:::-;12282:78;12370:18;12391:21;12370:42;;12439:1;12426:10;:14;12423:70;;;12457:24;12470:10;12457:12;:24::i;:::-;12423:70;12213:287;;12170:330::o:0;12907:477::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13038:4:::1;13016:27;;:10;:27;;::::0;13008:94:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13131:1;13121:7;:11;13113:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;13208:10;13201:28;;;13238:4;13201:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13190:7;:54;;13182:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;13286:10;13279:27;;;13307:15;;;;;;;;;;;13324:7;13279:53;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13367:7;13346:29;;;;;;;;;;12907:477:::0;;:::o;6526:119::-;6592:7;6619:9;:18;6629:7;6619:18;;;;;;;;;;;;;;;;6612:25;;6526:119;;;:::o;2127:148::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2234:1:::1;2197:40;;2218:6;::::0;::::1;;;;;;;;2197:40;;;;;;;;;;;;2265:1;2248:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2127:148::o:0;12648:207::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12711:11:::1;;;;;;;;;;;12710:12;12702:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12778:4;12760:15;;:22;;;;;;;;;;;;;;;;;;12808:4;12794:11;;:18;;;;;;;;;;;;;;;;;;12827:20;;;;;;;;;;12648:207::o:0;3335:79::-;3372:42;3335:79;:::o;3835:52::-;;;;:::o;1511:79::-;1549:7;1576:6;;;;;;;;;;;1569:13;;1511:79;:::o;6243:87::-;6282:13;6315:7;;;;;;;;;;;;;;;;;6308:14;;6243:87;:::o;6764:167::-;6842:4;6859:42;6869:12;:10;:12::i;:::-;6883:9;6894:6;6859:9;:42::i;:::-;6919:4;6912:11;;6764:167;;;;:::o;13395:386::-;13449:26;13478:21;13449:50;;13539:1;13518:18;:22;13510:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13620:21;13598:18;:43;;13590:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;13692:15;;;;;;;;;;;13676:42;;:62;13719:18;13676:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13752:21;;;;;;;;;;13438:343;13395:386::o;6937:143::-;7018:7;7045:11;:18;7057:5;7045:18;;;;;;;;;;;;;;;:27;7064:7;7045:27;;;;;;;;;;;;;;;;7038:34;;6937:143;;;;:::o;11433:222::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11536:2:::1;11525:7;:13;;:31;;;;;11554:2;11542:8;:14;;11525:31;11517:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11608:7;11597:8;:18;;;;11638:8;11626:9;:20;;;;11433:222:::0;;:::o;1721:203::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1832:1:::1;1812:22;;:8;:22;;::::0;1804:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1888:28;1907:8;1888:18;:28::i;:::-;1721:203:::0;:::o;4092:31::-;;;;;;;;;;;;;:::o;11913:245::-;1646:12;:10;:12::i;:::-;1636:22;;:6;;;;;;;;;;:22;;;1628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12024:5:::1;11993:36;;:18;:27;12012:7;11993:27;;;;;;;;;;;;;;;;;;;;;;;;;:36;;::::0;11985:76:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;12102:5;12072:18;:27;12091:7;12072:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;12142:7;12120:30;;;;;;;;;;;;11913:245:::0;:::o;417:98::-;470:7;497:10;490:17;;417:98;:::o;7669:335::-;7779:1;7762:19;;:5;:19;;;7754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7860:1;7841:21;;:7;:21;;;7833:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7942:6;7912:11;:18;7924:5;7912:18;;;;;;;;;;;;;;;:27;7931:7;7912:27;;;;;;;;;;;;;;;:36;;;;7980:7;7964:32;;7973:5;7964:32;;;7989:6;7964:32;;;;;;:::i;:::-;;;;;;;;7669:335;;;:::o;8010:2324::-;8114:1;8098:18;;:4;:18;;;8090:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8191:1;8177:16;;:2;:16;;;8169:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8261:1;8252:6;:10;8244:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8328:13;:19;8342:4;8328:19;;;;;;;;;;;;;;;;;;;;;;;;;8327:20;:42;;;;;8352:13;:17;8366:2;8352:17;;;;;;;;;;;;;;;;;;;;;;;;;8351:18;8327:42;8319:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8409:15;8444:18;:24;8463:4;8444:24;;;;;;;;;;;;;;;;;;;;;;;;;8443:25;:52;;;;;8473:18;:22;8492:2;8473:22;;;;;;;;;;;;;;;;;;;;;;;;;8472:23;8443:52;8439:190;;;8520:11;;;;;;;;;;;8512:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8613:3;8600:8;;8590:6;:19;;;;:::i;:::-;:27;;;;:::i;:::-;8580:37;;8439:190;8654:18;:24;8673:4;8654:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8682:18;:22;8701:2;8682:22;;;;;;;;;;;;;;;;;;;;;;;;;8654:50;8650:94;;;8731:1;8721:11;;8650:94;8780:13;;;;;;;;;;;8772:21;;:4;:21;;;:55;;;;;8811:15;;;;;;;;;;;8797:30;;:2;:30;;;;8772:55;:82;;;;;8832:18;:22;8851:2;8832:22;;;;;;;;;;;;;;;;;;;;;;;;;8831:23;8772:82;8768:296;;;8890:11;;8880:6;:21;;8872:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;8981:11;;8971:6;8955:13;8965:2;8955:9;:13::i;:::-;:22;;;;:::i;:::-;:37;;8947:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;9040:8;;:10;;;;;;;;;:::i;:::-;;;;;;8768:296;9099:13;;;;;;;;;;;9091:21;;:4;:21;;;;:50;;;;;9117:18;:24;9136:4;9117:24;;;;;;;;;;;;;;;;;;;;;;;;;9116:25;9091:50;:77;;;;;9146:18;:22;9165:2;9146:22;;;;;;;;;;;;;;;;;;;;;;;;;9145:23;9091:77;9087:172;;;9204:11;;9194:6;:21;;9186:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;9087:172;9291:13;;;;;;;;;;;9285:19;;:2;:19;;;:44;;;;;9324:4;9308:21;;:4;:21;;;;9285:44;:73;;;;;9334:18;:24;9353:4;9334:24;;;;;;;;;;;;;;;;;;;;;;;;;9333:25;9285:73;:100;;;;;9363:18;:22;9382:2;9363:22;;;;;;;;;;;;;;;;;;;;;;;;;9362:23;9285:100;9281:204;;;9443:3;9429:9;;9419:6;:20;;;;:::i;:::-;:28;;;;:::i;:::-;9409:38;;9281:204;9510:28;9541:24;9559:4;9541:9;:24::i;:::-;9510:55;;9585:6;;;;;;;;;;;9584:7;:32;;;;;9603:13;;;;;;;;;;;9595:21;;:4;:21;;;;9584:32;:51;;;;;9620:15;;;;;;;;;;;9584:51;:88;;;;;9662:10;;9639:20;:33;9584:88;:104;;;;;9687:1;9676:8;;:12;9584:104;9580:407;;;9709:71;9726:53;9730:6;9738:40;9742:20;9764:13;;9738:3;:40::i;:::-;9726:3;:53::i;:::-;9709:16;:71::i;:::-;9798:26;9827:21;9798:50;;9891:1;9870:18;:22;9867:105;;;9917:35;9930:21;9917:12;:35::i;:::-;9867:105;9690:297;9580:407;10033:6;10015:9;:15;10025:4;10015:15;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;9997:9;:15;10007:4;9997:15;;;;;;;;;;;;;;;:42;;;;10094:7;10084:6;:18;;;;:::i;:::-;10067:9;:13;10077:2;10067:13;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;10051:9;:13;10061:2;10051:13;;;;;;;;;;;;;;;:52;;;;10134:2;10119:38;;10128:4;10119:38;;;10148:7;10138:6;:18;;;;:::i;:::-;10119:38;;;;;;:::i;:::-;;;;;;;;10182:1;10172:7;:11;10169:158;;;10252:7;10224:9;:24;10242:4;10224:24;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;10197:9;:24;10215:4;10197:24;;;;;;;;;;;;;;;:63;;;;10301:4;10278:37;;10287:4;10278:37;;;10307:7;10278:37;;;;;;:::i;:::-;;;;;;;;10169:158;8079:2255;;8010:2324;;;:::o;10345:551::-;4710:4;4701:6;;:13;;;;;;;;;;;;;;;;;;10445:1:::1;10431:11;:15;10423:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10491:21;10529:1;10515:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10491:40;;10560:4;10542;10547:1;10542:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10586:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10576:4;10581:1;10576:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10619:62;10636:4;10651:15;;;;;;;;;;;10669:11;10619:8;:62::i;:::-;10692:15;;;;;;;;;;;:66;;;10773:11;10799:1;10815:4;10842;10862:15;10692:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10412:484;4746:5:::0;4737:6;;:14;;;;;;;;;;;;;;;;;;10345:551;:::o;10907:419::-;10980:1;10971:6;:10;10963:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;11026:20;11089:13;;11061:24;11079:4;11061:9;:24::i;:::-;:41;11057:159;;11150:1;11144;11134:6;:12;;;;:::i;:::-;:18;;;;:::i;:::-;11119:33;;11057:159;;;11202:1;11196;11186:6;:12;;;;:::i;:::-;:18;;;;:::i;:::-;11171:33;;11057:159;11226:9;;;;;;;;;;;:18;;:32;11245:12;11226:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11269:15;;;;;;;;;;;:24;;:49;11304:12;11294:6;:23;;;;:::i;:::-;11269:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10953:373;10907:419;:::o;1930:191::-;2004:16;2023:6;;;;;;;;;;;2004:25;;2049:8;2040:6;;:17;;;;;;;;;;;;;;;;;;2104:8;2073:40;;2094:8;2073:40;;;;;;;;;;;;1993:128;1930:191;:::o;6651:107::-;6708:7;6740:1;6736;:5;6735:15;;6749:1;6735:15;;;6745:1;6735:15;6728:22;;6651:107;;;;:::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:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:468::-;3772:6;3780;3829:2;3817:9;3808:7;3804:23;3800:32;3797:119;;;3835:79;;:::i;:::-;3797:119;3955:1;3980:53;4025:7;4016:6;4005:9;4001:22;3980:53;:::i;:::-;3970:63;;3926:117;4082:2;4108:50;4150:7;4141:6;4130:9;4126:22;4108:50;:::i;:::-;4098:60;;4053:115;3707:468;;;;;:::o;4181:60::-;4209:3;4230:5;4223:12;;4181:60;;;:::o;4247:142::-;4297:9;4330:53;4348:34;4357:24;4375:5;4357:24;:::i;:::-;4348:34;:::i;:::-;4330:53;:::i;:::-;4317:66;;4247:142;;;:::o;4395:126::-;4445:9;4478:37;4509:5;4478:37;:::i;:::-;4465:50;;4395:126;;;:::o;4527:152::-;4603:9;4636:37;4667:5;4636:37;:::i;:::-;4623:50;;4527:152;;;:::o;4685:183::-;4798:63;4855:5;4798:63;:::i;:::-;4793:3;4786:76;4685:183;;:::o;4874:274::-;4993:4;5031:2;5020:9;5016:18;5008:26;;5044:97;5138:1;5127:9;5123:17;5114:6;5044:97;:::i;:::-;4874:274;;;;:::o;5154:118::-;5241:24;5259:5;5241:24;:::i;:::-;5236:3;5229:37;5154:118;;:::o;5278:222::-;5371:4;5409:2;5398:9;5394:18;5386:26;;5422:71;5490:1;5479:9;5475:17;5466:6;5422:71;:::i;:::-;5278:222;;;;:::o;5506:619::-;5583:6;5591;5599;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5901:2;5927:53;5972:7;5963:6;5952:9;5948:22;5927:53;:::i;:::-;5917:63;;5872:118;6029:2;6055:53;6100:7;6091:6;6080:9;6076:22;6055:53;:::i;:::-;6045:63;;6000:118;5506:619;;;;;:::o;6131:86::-;6166:7;6206:4;6199:5;6195:16;6184:27;;6131:86;;;:::o;6223:112::-;6306:22;6322:5;6306:22;:::i;:::-;6301:3;6294:35;6223:112;;:::o;6341:214::-;6430:4;6468:2;6457:9;6453:18;6445:26;;6481:67;6545:1;6534:9;6530:17;6521:6;6481:67;:::i;:::-;6341:214;;;;:::o;6561:329::-;6620:6;6669:2;6657:9;6648:7;6644:23;6640:32;6637:119;;;6675:79;;:::i;:::-;6637:119;6795:1;6820:53;6865:7;6856:6;6845:9;6841:22;6820:53;:::i;:::-;6810:63;;6766:117;6561:329;;;;:::o;6896:118::-;6983:24;7001:5;6983:24;:::i;:::-;6978:3;6971:37;6896:118;;:::o;7020:222::-;7113:4;7151:2;7140:9;7136:18;7128:26;;7164:71;7232:1;7221:9;7217:17;7208:6;7164:71;:::i;:::-;7020:222;;;;:::o;7248:474::-;7316:6;7324;7373:2;7361:9;7352:7;7348:23;7344:32;7341:119;;;7379:79;;:::i;:::-;7341:119;7499:1;7524:53;7569:7;7560:6;7549:9;7545:22;7524:53;:::i;:::-;7514:63;;7470:117;7626:2;7652:53;7697:7;7688:6;7677:9;7673:22;7652:53;:::i;:::-;7642:63;;7597:118;7248:474;;;;;:::o;7728:::-;7796:6;7804;7853:2;7841:9;7832:7;7828:23;7824:32;7821:119;;;7859:79;;:::i;:::-;7821:119;7979:1;8004:53;8049:7;8040:6;8029:9;8025:22;8004:53;:::i;:::-;7994:63;;7950:117;8106:2;8132:53;8177:7;8168:6;8157:9;8153:22;8132:53;:::i;:::-;8122:63;;8077:118;7728:474;;;;;:::o;8208:182::-;8348:34;8344:1;8336:6;8332:14;8325:58;8208:182;:::o;8396:366::-;8538:3;8559:67;8623:2;8618:3;8559:67;:::i;:::-;8552:74;;8635:93;8724:3;8635:93;:::i;:::-;8753:2;8748:3;8744:12;8737:19;;8396:366;;;:::o;8768:419::-;8934:4;8972:2;8961:9;8957:18;8949:26;;9021:9;9015:4;9011:20;9007:1;8996:9;8992:17;8985:47;9049:131;9175:4;9049:131;:::i;:::-;9041:139;;8768:419;;;:::o;9193:180::-;9241:77;9238:1;9231:88;9338:4;9335:1;9328:15;9362:4;9359:1;9352:15;9379:102;9421:8;9468:5;9465:1;9461:13;9440:34;;9379:102;;;:::o;9487:848::-;9548:5;9555:4;9579:6;9570:15;;9603:5;9594:14;;9617:712;9638:1;9628:8;9625:15;9617:712;;;9733:4;9728:3;9724:14;9718:4;9715:24;9712:50;;;9742:18;;:::i;:::-;9712:50;9792:1;9782:8;9778:16;9775:451;;;10207:4;10200:5;10196:16;10187:25;;9775:451;10257:4;10251;10247:15;10239:23;;10287:32;10310:8;10287:32;:::i;:::-;10275:44;;9617:712;;;9487:848;;;;;;;:::o;10341:1073::-;10395:5;10586:8;10576:40;;10607:1;10598:10;;10609:5;;10576:40;10635:4;10625:36;;10652:1;10643:10;;10654:5;;10625:36;10721:4;10769:1;10764:27;;;;10805:1;10800:191;;;;10714:277;;10764:27;10782:1;10773:10;;10784:5;;;10800:191;10845:3;10835:8;10832:17;10829:43;;;10852:18;;:::i;:::-;10829:43;10901:8;10898:1;10894:16;10885:25;;10936:3;10929:5;10926:14;10923:40;;;10943:18;;:::i;:::-;10923:40;10976:5;;;10714:277;;11100:2;11090:8;11087:16;11081:3;11075:4;11072:13;11068:36;11050:2;11040:8;11037:16;11032:2;11026:4;11023:12;11019:35;11003:111;11000:246;;;11156:8;11150:4;11146:19;11137:28;;11191:3;11184:5;11181:14;11178:40;;;11198:18;;:::i;:::-;11178:40;11231:5;;11000:246;11271:42;11309:3;11299:8;11293:4;11290:1;11271:42;:::i;:::-;11256:57;;;;11345:4;11340:3;11336:14;11329:5;11326:25;11323:51;;;11354:18;;:::i;:::-;11323:51;11403:4;11396:5;11392:16;11383:25;;10341:1073;;;;;;:::o;11420:281::-;11478:5;11502:23;11520:4;11502:23;:::i;:::-;11494:31;;11546:25;11562:8;11546:25;:::i;:::-;11534:37;;11590:104;11627:66;11617:8;11611:4;11590:104;:::i;:::-;11581:113;;11420:281;;;;:::o;11707:410::-;11747:7;11770:20;11788:1;11770:20;:::i;:::-;11765:25;;11804:20;11822:1;11804:20;:::i;:::-;11799:25;;11859:1;11856;11852:9;11881:30;11899:11;11881:30;:::i;:::-;11870:41;;12060:1;12051:7;12047:15;12044:1;12041:22;12021:1;12014:9;11994:83;11971:139;;12090:18;;:::i;:::-;11971:139;11755:362;11707:410;;;;:::o;12123:227::-;12263:34;12259:1;12251:6;12247:14;12240:58;12332:10;12327:2;12319:6;12315:15;12308:35;12123:227;:::o;12356:366::-;12498:3;12519:67;12583:2;12578:3;12519:67;:::i;:::-;12512:74;;12595:93;12684:3;12595:93;:::i;:::-;12713:2;12708:3;12704:12;12697:19;;12356:366;;;:::o;12728:419::-;12894:4;12932:2;12921:9;12917:18;12909:26;;12981:9;12975:4;12971:20;12967:1;12956:9;12952:17;12945:47;13009:131;13135:4;13009:131;:::i;:::-;13001:139;;12728:419;;;:::o;13153:194::-;13193:4;13213:20;13231:1;13213:20;:::i;:::-;13208:25;;13247:20;13265:1;13247:20;:::i;:::-;13242:25;;13291:1;13288;13284:9;13276:17;;13315:1;13309:4;13306:11;13303:37;;;13320:18;;:::i;:::-;13303:37;13153:194;;;;:::o;13353:177::-;13493:29;13489:1;13481:6;13477:14;13470:53;13353:177;:::o;13536:366::-;13678:3;13699:67;13763:2;13758:3;13699:67;:::i;:::-;13692:74;;13775:93;13864:3;13775:93;:::i;:::-;13893:2;13888:3;13884:12;13877:19;;13536:366;;;:::o;13908:419::-;14074:4;14112:2;14101:9;14097:18;14089:26;;14161:9;14155:4;14151:20;14147:1;14136:9;14132:17;14125:47;14189:131;14315:4;14189:131;:::i;:::-;14181:139;;13908:419;;;:::o;14333:241::-;14473:34;14469:1;14461:6;14457:14;14450:58;14542:24;14537:2;14529:6;14525:15;14518:49;14333:241;:::o;14580:366::-;14722:3;14743:67;14807:2;14802:3;14743:67;:::i;:::-;14736:74;;14819:93;14908:3;14819:93;:::i;:::-;14937:2;14932:3;14928:12;14921:19;;14580:366;;;:::o;14952:419::-;15118:4;15156:2;15145:9;15141:18;15133:26;;15205:9;15199:4;15195:20;15191:1;15180:9;15176:17;15169:47;15233:131;15359:4;15233:131;:::i;:::-;15225:139;;14952:419;;;:::o;15377:221::-;15517:34;15513:1;15505:6;15501:14;15494:58;15586:4;15581:2;15573:6;15569:15;15562:29;15377:221;:::o;15604:366::-;15746:3;15767:67;15831:2;15826:3;15767:67;:::i;:::-;15760:74;;15843:93;15932:3;15843:93;:::i;:::-;15961:2;15956:3;15952:12;15945:19;;15604:366;;;:::o;15976:419::-;16142:4;16180:2;16169:9;16165:18;16157:26;;16229:9;16223:4;16219:20;16215:1;16204:9;16200:17;16193:47;16257:131;16383:4;16257:131;:::i;:::-;16249:139;;15976:419;;;:::o;16401:143::-;16458:5;16489:6;16483:13;16474:22;;16505:33;16532:5;16505:33;:::i;:::-;16401:143;;;;:::o;16550:351::-;16620:6;16669:2;16657:9;16648:7;16644:23;16640:32;16637:119;;;16675:79;;:::i;:::-;16637:119;16795:1;16820:64;16876:7;16867:6;16856:9;16852:22;16820:64;:::i;:::-;16810:74;;16766:128;16550:351;;;;:::o;16907:169::-;17047:21;17043:1;17035:6;17031:14;17024:45;16907:169;:::o;17082:366::-;17224:3;17245:67;17309:2;17304:3;17245:67;:::i;:::-;17238:74;;17321:93;17410:3;17321:93;:::i;:::-;17439:2;17434:3;17430:12;17423:19;;17082:366;;;:::o;17454:419::-;17620:4;17658:2;17647:9;17643:18;17635:26;;17707:9;17701:4;17697:20;17693:1;17682:9;17678:17;17671:47;17735:131;17861:4;17735:131;:::i;:::-;17727:139;;17454:419;;;:::o;17879:134::-;17937:9;17970:37;18001:5;17970:37;:::i;:::-;17957:50;;17879:134;;;:::o;18019:147::-;18114:45;18153:5;18114:45;:::i;:::-;18109:3;18102:58;18019:147;;:::o;18172:348::-;18301:4;18339:2;18328:9;18324:18;18316:26;;18352:79;18428:1;18417:9;18413:17;18404:6;18352:79;:::i;:::-;18441:72;18509:2;18498:9;18494:18;18485:6;18441:72;:::i;:::-;18172:348;;;;;:::o;18526:137::-;18580:5;18611:6;18605:13;18596:22;;18627:30;18651:5;18627:30;:::i;:::-;18526:137;;;;:::o;18669:345::-;18736:6;18785:2;18773:9;18764:7;18760:23;18756:32;18753:119;;;18791:79;;:::i;:::-;18753:119;18911:1;18936:61;18989:7;18980:6;18969:9;18965:22;18936:61;:::i;:::-;18926:71;;18882:125;18669:345;;;;:::o;19020:173::-;19160:25;19156:1;19148:6;19144:14;19137:49;19020:173;:::o;19199:366::-;19341:3;19362:67;19426:2;19421:3;19362:67;:::i;:::-;19355:74;;19438:93;19527:3;19438:93;:::i;:::-;19556:2;19551:3;19547:12;19540:19;;19199:366;;;:::o;19571:419::-;19737:4;19775:2;19764:9;19760:18;19752:26;;19824:9;19818:4;19814:20;19810:1;19799:9;19795:17;19788:47;19852:131;19978:4;19852:131;:::i;:::-;19844:139;;19571:419;;;:::o;19996:175::-;20136:27;20132:1;20124:6;20120:14;20113:51;19996:175;:::o;20177:366::-;20319:3;20340:67;20404:2;20399:3;20340:67;:::i;:::-;20333:74;;20416:93;20505:3;20416:93;:::i;:::-;20534:2;20529:3;20525:12;20518:19;;20177:366;;;:::o;20549:419::-;20715:4;20753:2;20742:9;20738:18;20730:26;;20802:9;20796:4;20792:20;20788:1;20777:9;20773:17;20766:47;20830:131;20956:4;20830:131;:::i;:::-;20822:139;;20549:419;;;:::o;20974:225::-;21114:34;21110:1;21102:6;21098:14;21091:58;21183:8;21178:2;21170:6;21166:15;21159:33;20974:225;:::o;21205:366::-;21347:3;21368:67;21432:2;21427:3;21368:67;:::i;:::-;21361:74;;21444:93;21533:3;21444:93;:::i;:::-;21562:2;21557:3;21553:12;21546:19;;21205:366;;;:::o;21577:419::-;21743:4;21781:2;21770:9;21766:18;21758:26;;21830:9;21824:4;21820:20;21816:1;21805:9;21801:17;21794:47;21858:131;21984:4;21858:131;:::i;:::-;21850:139;;21577:419;;;:::o;22002:177::-;22142:29;22138:1;22130:6;22126:14;22119:53;22002:177;:::o;22185:366::-;22327:3;22348:67;22412:2;22407:3;22348:67;:::i;:::-;22341:74;;22424:93;22513:3;22424:93;:::i;:::-;22542:2;22537:3;22533:12;22526:19;;22185:366;;;:::o;22557:419::-;22723:4;22761:2;22750:9;22746:18;22738:26;;22810:9;22804:4;22800:20;22796:1;22785:9;22781:17;22774:47;22838:131;22964:4;22838:131;:::i;:::-;22830:139;;22557:419;;;:::o;22982:223::-;23122:34;23118:1;23110:6;23106:14;23099:58;23191:6;23186:2;23178:6;23174:15;23167:31;22982:223;:::o;23211:366::-;23353:3;23374:67;23438:2;23433:3;23374:67;:::i;:::-;23367:74;;23450:93;23539:3;23450:93;:::i;:::-;23568:2;23563:3;23559:12;23552:19;;23211:366;;;:::o;23583:419::-;23749:4;23787:2;23776:9;23772:18;23764:26;;23836:9;23830:4;23826:20;23822:1;23811:9;23807:17;23800:47;23864:131;23990:4;23864:131;:::i;:::-;23856:139;;23583:419;;;:::o;24008:221::-;24148:34;24144:1;24136:6;24132:14;24125:58;24217:4;24212:2;24204:6;24200:15;24193:29;24008:221;:::o;24235:366::-;24377:3;24398:67;24462:2;24457:3;24398:67;:::i;:::-;24391:74;;24474:93;24563:3;24474:93;:::i;:::-;24592:2;24587:3;24583:12;24576:19;;24235:366;;;:::o;24607:419::-;24773:4;24811:2;24800:9;24796:18;24788:26;;24860:9;24854:4;24850:20;24846:1;24835:9;24831:17;24824:47;24888:131;25014:4;24888:131;:::i;:::-;24880:139;;24607:419;;;:::o;25032:224::-;25172:34;25168:1;25160:6;25156:14;25149:58;25241:7;25236:2;25228:6;25224:15;25217:32;25032:224;:::o;25262:366::-;25404:3;25425:67;25489:2;25484:3;25425:67;:::i;:::-;25418:74;;25501:93;25590:3;25501:93;:::i;:::-;25619:2;25614:3;25610:12;25603:19;;25262:366;;;:::o;25634:419::-;25800:4;25838:2;25827:9;25823:18;25815:26;;25887:9;25881:4;25877:20;25873:1;25862:9;25858:17;25851:47;25915:131;26041:4;25915:131;:::i;:::-;25907:139;;25634:419;;;:::o;26059:222::-;26199:34;26195:1;26187:6;26183:14;26176:58;26268:5;26263:2;26255:6;26251:15;26244:30;26059:222;:::o;26287:366::-;26429:3;26450:67;26514:2;26509:3;26450:67;:::i;:::-;26443:74;;26526:93;26615:3;26526:93;:::i;:::-;26644:2;26639:3;26635:12;26628:19;;26287:366;;;:::o;26659:419::-;26825:4;26863:2;26852:9;26848:18;26840:26;;26912:9;26906:4;26902:20;26898:1;26887:9;26883:17;26876:47;26940:131;27066:4;26940:131;:::i;:::-;26932:139;;26659:419;;;:::o;27084:228::-;27224:34;27220:1;27212:6;27208:14;27201:58;27293:11;27288:2;27280:6;27276:15;27269:36;27084:228;:::o;27318:366::-;27460:3;27481:67;27545:2;27540:3;27481:67;:::i;:::-;27474:74;;27557:93;27646:3;27557:93;:::i;:::-;27675:2;27670:3;27666:12;27659:19;;27318:366;;;:::o;27690:419::-;27856:4;27894:2;27883:9;27879:18;27871:26;;27943:9;27937:4;27933:20;27929:1;27918:9;27914:17;27907:47;27971:131;28097:4;27971:131;:::i;:::-;27963:139;;27690:419;;;:::o;28115:175::-;28255:27;28251:1;28243:6;28239:14;28232:51;28115:175;:::o;28296:366::-;28438:3;28459:67;28523:2;28518:3;28459:67;:::i;:::-;28452:74;;28535:93;28624:3;28535:93;:::i;:::-;28653:2;28648:3;28644:12;28637:19;;28296:366;;;:::o;28668:419::-;28834:4;28872:2;28861:9;28857:18;28849:26;;28921:9;28915:4;28911:20;28907:1;28896:9;28892:17;28885:47;28949:131;29075:4;28949:131;:::i;:::-;28941:139;;28668:419;;;:::o;29093:169::-;29233:21;29229:1;29221:6;29217:14;29210:45;29093:169;:::o;29268:366::-;29410:3;29431:67;29495:2;29490:3;29431:67;:::i;:::-;29424:74;;29507:93;29596:3;29507:93;:::i;:::-;29625:2;29620:3;29616:12;29609:19;;29268:366;;;:::o;29640:419::-;29806:4;29844:2;29833:9;29829:18;29821:26;;29893:9;29887:4;29883:20;29879:1;29868:9;29864:17;29857:47;29921:131;30047:4;29921:131;:::i;:::-;29913:139;;29640:419;;;:::o;30065:180::-;30113:77;30110:1;30103:88;30210:4;30207:1;30200:15;30234:4;30231:1;30224:15;30251:185;30291:1;30308:20;30326:1;30308:20;:::i;:::-;30303:25;;30342:20;30360:1;30342:20;:::i;:::-;30337:25;;30381:1;30371:35;;30386:18;;:::i;:::-;30371:35;30428:1;30425;30421:9;30416:14;;30251:185;;;;:::o;30442:175::-;30582:27;30578:1;30570:6;30566:14;30559:51;30442:175;:::o;30623:366::-;30765:3;30786:67;30850:2;30845:3;30786:67;:::i;:::-;30779:74;;30862:93;30951:3;30862:93;:::i;:::-;30980:2;30975:3;30971:12;30964:19;;30623:366;;;:::o;30995:419::-;31161:4;31199:2;31188:9;31184:18;31176:26;;31248:9;31242:4;31238:20;31234:1;31223:9;31219:17;31212:47;31276:131;31402:4;31276:131;:::i;:::-;31268:139;;30995:419;;;:::o;31420:191::-;31460:3;31479:20;31497:1;31479:20;:::i;:::-;31474:25;;31513:20;31531:1;31513:20;:::i;:::-;31508:25;;31556:1;31553;31549:9;31542:16;;31577:3;31574:1;31571:10;31568:36;;;31584:18;;:::i;:::-;31568:36;31420:191;;;;:::o;31617:176::-;31757:28;31753:1;31745:6;31741:14;31734:52;31617:176;:::o;31799:366::-;31941:3;31962:67;32026:2;32021:3;31962:67;:::i;:::-;31955:74;;32038:93;32127:3;32038:93;:::i;:::-;32156:2;32151:3;32147:12;32140:19;;31799:366;;;:::o;32171:419::-;32337:4;32375:2;32364:9;32360:18;32352:26;;32424:9;32418:4;32414:20;32410:1;32399:9;32395:17;32388:47;32452:131;32578:4;32452:131;:::i;:::-;32444:139;;32171:419;;;:::o;32596:233::-;32635:3;32658:24;32676:5;32658:24;:::i;:::-;32649:33;;32704:66;32697:5;32694:77;32691:103;;32774:18;;:::i;:::-;32691:103;32821:1;32814:5;32810:13;32803:20;;32596:233;;;:::o;32835:179::-;32975:31;32971:1;32963:6;32959:14;32952:55;32835:179;:::o;33020:366::-;33162:3;33183:67;33247:2;33242:3;33183:67;:::i;:::-;33176:74;;33259:93;33348:3;33259:93;:::i;:::-;33377:2;33372:3;33368:12;33361:19;;33020:366;;;:::o;33392:419::-;33558:4;33596:2;33585:9;33581:18;33573:26;;33645:9;33639:4;33635:20;33631:1;33620:9;33616:17;33609:47;33673:131;33799:4;33673:131;:::i;:::-;33665:139;;33392:419;;;:::o;33817:180::-;33865:77;33862:1;33855:88;33962:4;33959:1;33952:15;33986:4;33983:1;33976:15;34003:180;34051:77;34048:1;34041:88;34148:4;34145:1;34138:15;34172:4;34169:1;34162:15;34189:143;34246:5;34277:6;34271:13;34262:22;;34293:33;34320:5;34293:33;:::i;:::-;34189:143;;;;:::o;34338:351::-;34408:6;34457:2;34445:9;34436:7;34432:23;34428:32;34425:119;;;34463:79;;:::i;:::-;34425:119;34583:1;34608:64;34664:7;34655:6;34644:9;34640:22;34608:64;:::i;:::-;34598:74;;34554:128;34338:351;;;;:::o;34695:85::-;34740:7;34769:5;34758:16;;34695:85;;;:::o;34786:158::-;34844:9;34877:61;34895:42;34904:32;34930:5;34904:32;:::i;:::-;34895:42;:::i;:::-;34877:61;:::i;:::-;34864:74;;34786:158;;;:::o;34950:147::-;35045:45;35084:5;35045:45;:::i;:::-;35040:3;35033:58;34950:147;;:::o;35103:114::-;35170:6;35204:5;35198:12;35188:22;;35103:114;;;:::o;35223:184::-;35322:11;35356:6;35351:3;35344:19;35396:4;35391:3;35387:14;35372:29;;35223:184;;;;:::o;35413:132::-;35480:4;35503:3;35495:11;;35533:4;35528:3;35524:14;35516:22;;35413:132;;;:::o;35551:108::-;35628:24;35646:5;35628:24;:::i;:::-;35623:3;35616:37;35551:108;;:::o;35665:179::-;35734:10;35755:46;35797:3;35789:6;35755:46;:::i;:::-;35833:4;35828:3;35824:14;35810:28;;35665:179;;;;:::o;35850:113::-;35920:4;35952;35947:3;35943:14;35935:22;;35850:113;;;:::o;35999:732::-;36118:3;36147:54;36195:5;36147:54;:::i;:::-;36217:86;36296:6;36291:3;36217:86;:::i;:::-;36210:93;;36327:56;36377:5;36327:56;:::i;:::-;36406:7;36437:1;36422:284;36447:6;36444:1;36441:13;36422:284;;;36523:6;36517:13;36550:63;36609:3;36594:13;36550:63;:::i;:::-;36543:70;;36636:60;36689:6;36636:60;:::i;:::-;36626:70;;36482:224;36469:1;36466;36462:9;36457:14;;36422:284;;;36426:14;36722:3;36715:10;;36123:608;;;35999:732;;;;:::o;36737:831::-;37000:4;37038:3;37027:9;37023:19;37015:27;;37052:71;37120:1;37109:9;37105:17;37096:6;37052:71;:::i;:::-;37133:80;37209:2;37198:9;37194:18;37185:6;37133:80;:::i;:::-;37260:9;37254:4;37250:20;37245:2;37234:9;37230:18;37223:48;37288:108;37391:4;37382:6;37288:108;:::i;:::-;37280:116;;37406:72;37474:2;37463:9;37459:18;37450:6;37406:72;:::i;:::-;37488:73;37556:3;37545:9;37541:19;37532:6;37488:73;:::i;:::-;36737:831;;;;;;;;:::o

Swarm Source

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