POL Price: $0.32 (-0.59%)
 

Overview

POL Balance

Polygon PoS Chain LogoPolygon PoS Chain LogoPolygon PoS Chain Logo0 POL

POL Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Parent Transaction Hash Block From To
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TokenSwap

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2024-12-08
*/

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

contract TokenSwap {
    address payable public owner;
    // swaprouter Ethereum: 0xE592427A0AEce92De3Edee1F18E0157C05861564
    // swapRouter BNB:      0x8ddA5A831C1BaFFc646C8D0351A59709367D7865
    // swaprourer Arbitrum: 0xE592427A0AEce92De3Edee1F18E0157C05861564
    // swapRouter Polygon:  0xE592427A0AEce92De3Edee1F18E0157C05861564
    // swapRouter TRX:      TQAvWQpT9H916GckwWDJNhYZvQMkuRL7PN

    // feeTracker Ethereum: 0x0000000000000000000000000000000000000000
    // feeTracker BNB:      0x0000000000000000000000000000000000000000
    // feetracker Arbitrum: 0xDDa01a26bFD823fc746607747Ae9BDa760e0983b
    // feetracker Polygon:  0x9f0022C88314DF8686355CE3e87acc269296C20B
    // feeTracker Trx:      0x0000000000000000000000000000000000000000

    struct FeeDetails {
        uint16 percentX10000;
        uint16 resellerCommissionPercentX10000;
    }
    mapping (uint8=>FeeDetails) public feeDetails;
    ISwapRouter public swapRouter;
    
    IFeeTracker public feeTracker;

    address public WETH; // WETH address

    modifier onlyOwner() {
        require(msg.sender == owner, "Caller is not the owner");
        _;
    }

    constructor(address _swapRouter,address _feeTracker) {
        owner = payable(msg.sender);
        feeTracker = IFeeTracker(_feeTracker);
        
        swapRouter = ISwapRouter(_swapRouter);
        WETH = swapRouter.WETH9();
        IERC20(WETH).approve(address(swapRouter), 2**255);

        setFeeDetails(0,250,0);
        setFeeDetails(1,150,200);
        setFeeDetails(2,100,500);
        setFeeDetails(3,50,1000);
    }

    // Fallback function to allow contract to accept ETH directly
    receive() external payable {}

    function setFeeDetails(uint8 _vipId,uint16 _percentX10000,uint16 _resellerCommissionPercentX10000) public{
        feeDetails[_vipId].percentX10000 = _percentX10000;
        feeDetails[_vipId].resellerCommissionPercentX10000 = _resellerCommissionPercentX10000;
    }

    function setSwapRouter(address _swapRouter) public onlyOwner {
        swapRouter = ISwapRouter(_swapRouter);
        WETH = swapRouter.WETH9();
        IERC20(WETH).approve(address(swapRouter), 2**255);
    }

    function setFeeTrackerAddress(address _feeTracker) public onlyOwner {
        feeTracker = IFeeTracker(_feeTracker);
    }

    function setOwnership(address payable newOwner) public onlyOwner {
        require(newOwner != address(0), "New owner is the zero address");
        owner = newOwner;
    }

    function swapToken(address tokenIn, address tokenOut, uint amountIn,uint24 feeTier) external payable {


        // ETH is represented as address(0) or WETH address
        if (msg.value > 0) {
            IWETH(WETH).deposit{value: msg.value}();
            tokenIn = WETH;
            amountIn = msg.value;
        }else{
            require(amountIn > 0, "Must specify an amount to swap");
            require(IERC20(tokenIn).transferFrom(msg.sender, address(this), amountIn), "Transfer failed");
        }
        if(tokenOut==address(0)){
            tokenOut = WETH; // Change tokenOut to WETH
        }

        uint8 userVipId = feeTracker.getUserVipStatus(msg.sender);
        uint16 feePercent = feeDetails[userVipId].percentX10000;
        uint feeAmount = (amountIn * feePercent) / 10000;
        uint amountInAfterFee = amountIn - feeAmount;
        
        address payable reseller = payable(feeTracker.getUserIntroducer(msg.sender));
        if (reseller != address(0)) {
            uint8 resellerVipId = feeTracker.getUserVipStatus(reseller);
            uint16 resellerCommissionPercent = feeDetails[resellerVipId].resellerCommissionPercentX10000;
            uint commissionAmount = (feeAmount * resellerCommissionPercent) / 10000;
            
            if(commissionAmount>0){
                feeAmount -= commissionAmount;
                if(tokenIn==WETH){
                    IWETH(WETH).withdraw(commissionAmount);
                    reseller.transfer(commissionAmount);
                }else{
                    require(IERC20(tokenIn).transfer(reseller, commissionAmount), "Commission transfer failed");
                }
            }
        }

        //transfer owner fee and change token address
        if(feeAmount>0){
            require(IERC20(tokenIn).transfer(owner, feeAmount), "Fee transfer failed");
        }

        if(IERC20(tokenIn).allowance(address(this),address(swapRouter)) < amountInAfterFee)
            IERC20(tokenIn).approve(address(swapRouter), 2**255);

        ISwapRouter.ExactInputSingleParams memory params = ISwapRouter.ExactInputSingleParams({
            tokenIn: tokenIn,
            tokenOut: tokenOut,
            fee: feeTier,
            recipient: (tokenOut==WETH)?address(this):msg.sender,
            deadline: block.timestamp + 15 minutes,
            amountIn: amountInAfterFee,
            amountOutMinimum: 0,
            sqrtPriceLimitX96: 0 // nolimit
        });

        uint amountOut = swapRouter.exactInputSingle(params);

        // If swapping to ETH, unwrap WETH to ETH and transfer to the recipient
        if (tokenOut==WETH) {
            IWETH(WETH).withdraw(amountOut);
            (bool success, ) = msg.sender.call{value: amountOut}("");
            require(success, "Failed to send ETH");
        }
    }

    // Emergency withdraw ETH
    function emergencyWithdrawETH() external onlyOwner {
        uint256 balance = address(this).balance;
        require(balance > 0, "No ETH to withdraw");
        owner.transfer(balance);
    }

    // Emergency withdraw ERC20 tokens
    function emergencyWithdrawToken(address token) external onlyOwner {
        IERC20 erc20 = IERC20(token);
        uint256 balance = erc20.balanceOf(address(this));
        require(balance > 0, "No token balance to withdraw");
        erc20.transfer(owner, balance);
    }

    function getPrice(address token1, address token2, uint24 feeTier) public view returns (uint160 sqrtPriceX96) {
        address adjustedToken1 = token1 == address(0) ? WETH : token1;
        address adjustedToken2 = token2 == address(0) ? WETH : token2;

        IUniswapV3Factory factory = IUniswapV3Factory(swapRouter.factory());
        address poolAddress = factory.getPool(adjustedToken1, adjustedToken2, feeTier);
        require(poolAddress != address(0), "Pool does not exist");

        IUniswapV3Pool pool = IUniswapV3Pool(poolAddress);
        (sqrtPriceX96,,,,,,) = pool.slot0();
    }

    function getTokenInfo(address tokenAddress) public view returns (string memory name, string memory symbol, uint8 decimals) {
        IERC20 tokenMetadata1 = IERC20(tokenAddress);
        name = tokenMetadata1.name();
        symbol = tokenMetadata1.symbol();
        decimals = tokenMetadata1.decimals();
    }
}

interface IWETH {
    function deposit() external payable;
    function withdraw(uint wad) external;
}

interface IUniswapV3Pool {
    function slot0() external view returns (
        uint160 sqrtPriceX96,
        int24 tick,
        uint16 observationIndex,
        uint16 observationCardinality,
        uint16 observationCardinalityNext,
        uint8 feeProtocol,
        bool unlocked
    );
}

interface IUniswapV3Factory {
    function getPool(
        address tokenA,
        address tokenB,
        uint24 fee
    ) external view returns (address pool);
}

interface IFeeTracker {
    function getUserVipStatus(address) external view returns(uint8);
    function getUserIntroducer(address) external view returns (address);
}

interface IUniswapV3SwapCallback {
    function uniswapV3SwapCallback(
        int256 amount0Delta,
        int256 amount1Delta,
        bytes calldata data
    ) external;
}
interface ISwapRouter is IUniswapV3SwapCallback {
    function factory() external view returns (address);
    function WETH9() external view returns (address);
    struct ExactInputSingleParams {
        address tokenIn;
        address tokenOut;
        uint24 fee;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
        uint160 sqrtPriceLimitX96;
    }
    function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut);

    struct ExactInputParams {
        bytes path;
        address recipient;
        uint256 deadline;
        uint256 amountIn;
        uint256 amountOutMinimum;
    }
    function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut);

    struct ExactOutputSingleParams {
        address tokenIn;
        address tokenOut;
        uint24 fee;
        address recipient;
        uint256 deadline;
        uint256 amountOut;
        uint256 amountInMaximum;
        uint160 sqrtPriceLimitX96;
    }
    function exactOutputSingle(ExactOutputSingleParams calldata params) external payable returns (uint256 amountIn);

    struct ExactOutputParams {
        bytes path;
        address recipient;
        uint256 deadline;
        uint256 amountOut;
        uint256 amountInMaximum;
    }
    function exactOutput(ExactOutputParams calldata params) external payable returns (uint256 amountIn);
}

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function allowance(address owner,address spender) external view returns (uint);
    function approve(address spender, uint256 amount) external returns (bool);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_swapRouter","type":"address"},{"internalType":"address","name":"_feeTracker","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergencyWithdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"emergencyWithdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"feeDetails","outputs":[{"internalType":"uint16","name":"percentX10000","type":"uint16"},{"internalType":"uint16","name":"resellerCommissionPercentX10000","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTracker","outputs":[{"internalType":"contract IFeeTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token1","type":"address"},{"internalType":"address","name":"token2","type":"address"},{"internalType":"uint24","name":"feeTier","type":"uint24"}],"name":"getPrice","outputs":[{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getTokenInfo","outputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"_vipId","type":"uint8"},{"internalType":"uint16","name":"_percentX10000","type":"uint16"},{"internalType":"uint16","name":"_resellerCommissionPercentX10000","type":"uint16"}],"name":"setFeeDetails","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeTracker","type":"address"}],"name":"setFeeTrackerAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"setOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_swapRouter","type":"address"}],"name":"setSwapRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract ISwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint24","name":"feeTier","type":"uint24"}],"name":"swapToken","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405234801561000f575f5ffd5b50604051613287380380613287833981810160405281019061003191906103bc565b335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561015a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061017e91906103fa565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f80000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b815260040161025a92919061047f565b6020604051808303815f875af1158015610276573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061029a91906104db565b506102ad5f60fa5f6102f260201b60201c565b6102c16001609660c86102f260201b60201c565b6102d6600260646101f46102f260201b60201c565b6102eb600360326103e86102f260201b60201c565b5050610506565b8160015f8560ff1660ff1681526020019081526020015f205f015f6101000a81548161ffff021916908361ffff1602179055508060015f8560ff1660ff1681526020019081526020015f205f0160026101000a81548161ffff021916908361ffff160217905550505050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61038b82610362565b9050919050565b61039b81610381565b81146103a5575f5ffd5b50565b5f815190506103b681610392565b92915050565b5f5f604083850312156103d2576103d161035e565b5b5f6103df858286016103a8565b92505060206103f0858286016103a8565b9150509250929050565b5f6020828403121561040f5761040e61035e565b5b5f61041c848285016103a8565b91505092915050565b61042e81610381565b82525050565b5f819050919050565b5f819050919050565b5f819050919050565b5f61046961046461045f84610434565b610446565b61043d565b9050919050565b6104798161044f565b82525050565b5f6040820190506104925f830185610425565b61049f6020830184610470565b9392505050565b5f8115159050919050565b6104ba816104a6565b81146104c4575f5ffd5b50565b5f815190506104d5816104b1565b92915050565b5f602082840312156104f0576104ef61035e565b5b5f6104fd848285016104c7565b91505092915050565b612d74806105135f395ff3fe6080604052600436106100e0575f3560e01c8063845360171161007e578063ad5c464811610058578063ad5c46481461028b578063c31c9c07146102b5578063c8f5a43b146102df578063cba1f44d1461031c576100e7565b806384536017146102235780638da5cb5b14610239578063a701602314610263576100e7565b80633325e1df116100ba5780633325e1df146101795780633b861b26146101a357806341273657146101bf5780634613d135146101e7576100e7565b80631af03203146100eb5780631f69565f146101135780631ffe150c14610151576100e7565b366100e757005b5f5ffd5b3480156100f6575f5ffd5b50610111600480360381019061010c9190611cf6565b610344565b005b34801561011e575f5ffd5b5061013960048036038101906101349190611cf6565b610534565b60405161014893929190611dac565b60405180910390f35b34801561015c575f5ffd5b5061017760048036038101906101729190611cf6565b610697565b005b348015610184575f5ffd5b5061018d610768565b60405161019a9190611e4a565b60405180910390f35b6101bd60048036038101906101b89190611ece565b61078d565b005b3480156101ca575f5ffd5b506101e560048036038101906101e09190611cf6565b6113af565b005b3480156101f2575f5ffd5b5061020d60048036038101906102089190611f32565b61162b565b60405161021a9190611f91565b60405180910390f35b34801561022e575f5ffd5b506102376118fe565b005b348015610244575f5ffd5b5061024d611a39565b60405161025a9190611fca565b60405180910390f35b34801561026e575f5ffd5b506102896004803603810190610284919061200d565b611a5d565b005b348015610296575f5ffd5b5061029f611b9b565b6040516102ac9190612047565b60405180910390f35b3480156102c0575f5ffd5b506102c9611bc0565b6040516102d69190612080565b60405180910390f35b3480156102ea575f5ffd5b50610305600480360381019061030091906120c3565b611be5565b60405161031392919061210a565b60405180910390f35b348015610327575f5ffd5b50610342600480360381019061033d919061215b565b611c1f565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c9906121f5565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104109190612047565b602060405180830381865afa15801561042b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044f9190612227565b90505f8111610493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048a9061229c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016104ee9291906122e9565b6020604051808303815f875af115801561050a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052e9190612345565b50505050565b6060805f5f8490508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015610584573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105ac919061248e565b93508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156105f6573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061061e919061248e565b92508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610669573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068d91906124e9565b9150509193909250565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071c906121f5565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f34111561083f5760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156107fc575f5ffd5b505af115801561080e573d5f5f3e3d5ffd5b505050505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935034915061093e565b5f8211610881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108789061255e565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016108be9392919061257c565b6020604051808303815f875af11580156108da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fe9190612345565b61093d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610934906125fb565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109965760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692505b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a16ebf33336040518263ffffffff1660e01b81526004016109f19190612047565b602060405180830381865afa158015610a0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3091906124e9565b90505f60015f8360ff1660ff1681526020019081526020015f205f015f9054906101000a900461ffff1690505f6127108261ffff1686610a709190612646565b610a7a91906126b4565b90505f8186610a8991906126e4565b90505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633149f464336040518263ffffffff1660e01b8152600401610ae69190612047565b602060405180830381865afa158015610b01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b25919061272b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e3b575f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a16ebf33836040518263ffffffff1660e01b8152600401610bb59190612756565b602060405180830381865afa158015610bd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf491906124e9565b90505f60015f8360ff1660ff1681526020019081526020015f205f0160029054906101000a900461ffff1690505f6127108261ffff1687610c359190612646565b610c3f91906126b4565b90505f811115610e37578086610c5591906126e4565b955060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1603610d7b5760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610d05919061276f565b5f604051808303815f87803b158015610d1c575f5ffd5b505af1158015610d2e573d5f5f3e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d75573d5f5f3e3d5ffd5b50610e36565b8b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610db69291906122e9565b6020604051808303815f875af1158015610dd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df69190612345565b610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c906127d2565b60405180910390fd5b5b5b5050505b5f831115610f1e578873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401610e9e9291906122e9565b6020604051808303815f875af1158015610eba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ede9190612345565b610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f149061283a565b60405180910390fd5b5b818973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610f7b929190612858565b602060405180830381865afa158015610f96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fba9190612227565b101561107e578873ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f80000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b815260040161103c9291906128b8565b6020604051808303815f875af1158015611058573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107c9190612345565b505b5f6040518061010001604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018862ffffff16815260200160045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611128573361112a565b305b73ffffffffffffffffffffffffffffffffffffffff1681526020016103844261115391906128df565b81526020018481526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b81526004016111db91906129ee565b6020604051808303815f875af11580156111f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121b9190612227565b905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16036113a25760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016112cb919061276f565b5f604051808303815f87803b1580156112e2575f5ffd5b505af11580156112f4573d5f5f3e3d5ffd5b505050505f3373ffffffffffffffffffffffffffffffffffffffff168260405161131d90612a35565b5f6040518083038185875af1925050503d805f8114611357576040519150601f19603f3d011682016040523d82523d5f602084013e61135c565b606091505b50509050806113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612a93565b60405180910390fd5b505b5050505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461143d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611434906121f5565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150b919061272b565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f80000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016115e79291906128b8565b6020604051808303815f875af1158015611603573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116279190612345565b5050565b5f5f5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146116665784611689565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90505f5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146116c557846116e8565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611755573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611779919061272b565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631698ee828585896040518463ffffffff1660e01b81526004016117b993929190612ac0565b602060405180830381865afa1580156117d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f8919061272b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90612b3f565b60405180910390fd5b5f8190508073ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156118b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d99190612bd1565b9091929394509091929350909192509091509050508096505050505050509392505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461198c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611983906121f5565b60405180910390fd5b5f4790505f81116119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c990612cb8565b60405180910390fd5b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611a35573d5f5f3e3d5ffd5b5050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae2906121f5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5090612d20565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001602052805f5260405f205f91509050805f015f9054906101000a900461ffff1690805f0160029054906101000a900461ffff16905082565b8160015f8560ff1660ff1681526020019081526020015f205f015f6101000a81548161ffff021916908361ffff1602179055508060015f8560ff1660ff1681526020019081526020015f205f0160026101000a81548161ffff021916908361ffff160217905550505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cc582611c9c565b9050919050565b611cd581611cbb565b8114611cdf575f5ffd5b50565b5f81359050611cf081611ccc565b92915050565b5f60208284031215611d0b57611d0a611c94565b5b5f611d1884828501611ce2565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d6382611d21565b611d6d8185611d2b565b9350611d7d818560208601611d3b565b611d8681611d49565b840191505092915050565b5f60ff82169050919050565b611da681611d91565b82525050565b5f6060820190508181035f830152611dc48186611d59565b90508181036020830152611dd88185611d59565b9050611de76040830184611d9d565b949350505050565b5f819050919050565b5f611e12611e0d611e0884611c9c565b611def565b611c9c565b9050919050565b5f611e2382611df8565b9050919050565b5f611e3482611e19565b9050919050565b611e4481611e2a565b82525050565b5f602082019050611e5d5f830184611e3b565b92915050565b5f819050919050565b611e7581611e63565b8114611e7f575f5ffd5b50565b5f81359050611e9081611e6c565b92915050565b5f62ffffff82169050919050565b611ead81611e96565b8114611eb7575f5ffd5b50565b5f81359050611ec881611ea4565b92915050565b5f5f5f5f60808587031215611ee657611ee5611c94565b5b5f611ef387828801611ce2565b9450506020611f0487828801611ce2565b9350506040611f1587828801611e82565b9250506060611f2687828801611eba565b91505092959194509250565b5f5f5f60608486031215611f4957611f48611c94565b5b5f611f5686828701611ce2565b9350506020611f6786828701611ce2565b9250506040611f7886828701611eba565b9150509250925092565b611f8b81611c9c565b82525050565b5f602082019050611fa45f830184611f82565b92915050565b5f611fb482611c9c565b9050919050565b611fc481611faa565b82525050565b5f602082019050611fdd5f830184611fbb565b92915050565b611fec81611faa565b8114611ff6575f5ffd5b50565b5f8135905061200781611fe3565b92915050565b5f6020828403121561202257612021611c94565b5b5f61202f84828501611ff9565b91505092915050565b61204181611cbb565b82525050565b5f60208201905061205a5f830184612038565b92915050565b5f61206a82611e19565b9050919050565b61207a81612060565b82525050565b5f6020820190506120935f830184612071565b92915050565b6120a281611d91565b81146120ac575f5ffd5b50565b5f813590506120bd81612099565b92915050565b5f602082840312156120d8576120d7611c94565b5b5f6120e5848285016120af565b91505092915050565b5f61ffff82169050919050565b612104816120ee565b82525050565b5f60408201905061211d5f8301856120fb565b61212a60208301846120fb565b9392505050565b61213a816120ee565b8114612144575f5ffd5b50565b5f8135905061215581612131565b92915050565b5f5f5f6060848603121561217257612171611c94565b5b5f61217f868287016120af565b935050602061219086828701612147565b92505060406121a186828701612147565b9150509250925092565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f6121df601783611d2b565b91506121ea826121ab565b602082019050919050565b5f6020820190508181035f83015261220c816121d3565b9050919050565b5f8151905061222181611e6c565b92915050565b5f6020828403121561223c5761223b611c94565b5b5f61224984828501612213565b91505092915050565b7f4e6f20746f6b656e2062616c616e636520746f207769746864726177000000005f82015250565b5f612286601c83611d2b565b915061229182612252565b602082019050919050565b5f6020820190508181035f8301526122b38161227a565b9050919050565b5f6122c482611e19565b9050919050565b6122d4816122ba565b82525050565b6122e381611e63565b82525050565b5f6040820190506122fc5f8301856122cb565b61230960208301846122da565b9392505050565b5f8115159050919050565b61232481612310565b811461232e575f5ffd5b50565b5f8151905061233f8161231b565b92915050565b5f6020828403121561235a57612359611c94565b5b5f61236784828501612331565b91505092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6123ae82611d49565b810181811067ffffffffffffffff821117156123cd576123cc612378565b5b80604052505050565b5f6123df611c8b565b90506123eb82826123a5565b919050565b5f67ffffffffffffffff82111561240a57612409612378565b5b61241382611d49565b9050602081019050919050565b5f61243261242d846123f0565b6123d6565b90508281526020810184848401111561244e5761244d612374565b5b612459848285611d3b565b509392505050565b5f82601f83011261247557612474612370565b5b8151612485848260208601612420565b91505092915050565b5f602082840312156124a3576124a2611c94565b5b5f82015167ffffffffffffffff8111156124c0576124bf611c98565b5b6124cc84828501612461565b91505092915050565b5f815190506124e381612099565b92915050565b5f602082840312156124fe576124fd611c94565b5b5f61250b848285016124d5565b91505092915050565b7f4d757374207370656369667920616e20616d6f756e7420746f207377617000005f82015250565b5f612548601e83611d2b565b915061255382612514565b602082019050919050565b5f6020820190508181035f8301526125758161253c565b9050919050565b5f60608201905061258f5f830186612038565b61259c6020830185612038565b6125a960408301846122da565b949350505050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f6125e5600f83611d2b565b91506125f0826125b1565b602082019050919050565b5f6020820190508181035f830152612612816125d9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61265082611e63565b915061265b83611e63565b925082820261266981611e63565b915082820484148315176126805761267f612619565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126be82611e63565b91506126c983611e63565b9250826126d9576126d8612687565b5b828204905092915050565b5f6126ee82611e63565b91506126f983611e63565b925082820390508181111561271157612710612619565b5b92915050565b5f8151905061272581611ccc565b92915050565b5f602082840312156127405761273f611c94565b5b5f61274d84828501612717565b91505092915050565b5f6020820190506127695f8301846122cb565b92915050565b5f6020820190506127825f8301846122da565b92915050565b7f436f6d6d697373696f6e207472616e73666572206661696c65640000000000005f82015250565b5f6127bc601a83611d2b565b91506127c782612788565b602082019050919050565b5f6020820190508181035f8301526127e9816127b0565b9050919050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f612824601383611d2b565b915061282f826127f0565b602082019050919050565b5f6020820190508181035f83015261285181612818565b9050919050565b5f60408201905061286b5f830185612038565b6128786020830184612038565b9392505050565b5f819050919050565b5f6128a261289d6128988461287f565b611def565b611e63565b9050919050565b6128b281612888565b82525050565b5f6040820190506128cb5f830185612038565b6128d860208301846128a9565b9392505050565b5f6128e982611e63565b91506128f483611e63565b925082820190508082111561290c5761290b612619565b5b92915050565b61291b81611cbb565b82525050565b61292a81611e96565b82525050565b61293981611e63565b82525050565b61294881611c9c565b82525050565b61010082015f8201516129635f850182612912565b5060208201516129766020850182612912565b5060408201516129896040850182612921565b50606082015161299c6060850182612912565b5060808201516129af6080850182612930565b5060a08201516129c260a0850182612930565b5060c08201516129d560c0850182612930565b5060e08201516129e860e085018261293f565b50505050565b5f61010082019050612a025f83018461294e565b92915050565b5f81905092915050565b50565b5f612a205f83612a08565b9150612a2b82612a12565b5f82019050919050565b5f612a3f82612a15565b9150819050919050565b7f4661696c656420746f2073656e642045544800000000000000000000000000005f82015250565b5f612a7d601283611d2b565b9150612a8882612a49565b602082019050919050565b5f6020820190508181035f830152612aaa81612a71565b9050919050565b612aba81611e96565b82525050565b5f606082019050612ad35f830186612038565b612ae06020830185612038565b612aed6040830184612ab1565b949350505050565b7f506f6f6c20646f6573206e6f74206578697374000000000000000000000000005f82015250565b5f612b29601383611d2b565b9150612b3482612af5565b602082019050919050565b5f6020820190508181035f830152612b5681612b1d565b9050919050565b612b6681611c9c565b8114612b70575f5ffd5b50565b5f81519050612b8181612b5d565b92915050565b5f8160020b9050919050565b612b9c81612b87565b8114612ba6575f5ffd5b50565b5f81519050612bb781612b93565b92915050565b5f81519050612bcb81612131565b92915050565b5f5f5f5f5f5f5f60e0888a031215612bec57612beb611c94565b5b5f612bf98a828b01612b73565b9750506020612c0a8a828b01612ba9565b9650506040612c1b8a828b01612bbd565b9550506060612c2c8a828b01612bbd565b9450506080612c3d8a828b01612bbd565b93505060a0612c4e8a828b016124d5565b92505060c0612c5f8a828b01612331565b91505092959891949750929550565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f612ca2601283611d2b565b9150612cad82612c6e565b602082019050919050565b5f6020820190508181035f830152612ccf81612c96565b9050919050565b7f4e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f612d0a601d83611d2b565b9150612d1582612cd6565b602082019050919050565b5f6020820190508181035f830152612d3781612cfe565b905091905056fea2646970667358221220d36cdb72c1ea8aeeedfd3d76667d6d0b620c97a3e3f701199ede2e937b3c812f64736f6c634300081c0033000000000000000000000000e592427a0aece92de3edee1f18e0157c058615640000000000000000000000009f0022c88314df8686355ce3e87acc269296c20b

Deployed Bytecode

0x6080604052600436106100e0575f3560e01c8063845360171161007e578063ad5c464811610058578063ad5c46481461028b578063c31c9c07146102b5578063c8f5a43b146102df578063cba1f44d1461031c576100e7565b806384536017146102235780638da5cb5b14610239578063a701602314610263576100e7565b80633325e1df116100ba5780633325e1df146101795780633b861b26146101a357806341273657146101bf5780634613d135146101e7576100e7565b80631af03203146100eb5780631f69565f146101135780631ffe150c14610151576100e7565b366100e757005b5f5ffd5b3480156100f6575f5ffd5b50610111600480360381019061010c9190611cf6565b610344565b005b34801561011e575f5ffd5b5061013960048036038101906101349190611cf6565b610534565b60405161014893929190611dac565b60405180910390f35b34801561015c575f5ffd5b5061017760048036038101906101729190611cf6565b610697565b005b348015610184575f5ffd5b5061018d610768565b60405161019a9190611e4a565b60405180910390f35b6101bd60048036038101906101b89190611ece565b61078d565b005b3480156101ca575f5ffd5b506101e560048036038101906101e09190611cf6565b6113af565b005b3480156101f2575f5ffd5b5061020d60048036038101906102089190611f32565b61162b565b60405161021a9190611f91565b60405180910390f35b34801561022e575f5ffd5b506102376118fe565b005b348015610244575f5ffd5b5061024d611a39565b60405161025a9190611fca565b60405180910390f35b34801561026e575f5ffd5b506102896004803603810190610284919061200d565b611a5d565b005b348015610296575f5ffd5b5061029f611b9b565b6040516102ac9190612047565b60405180910390f35b3480156102c0575f5ffd5b506102c9611bc0565b6040516102d69190612080565b60405180910390f35b3480156102ea575f5ffd5b50610305600480360381019061030091906120c3565b611be5565b60405161031392919061210a565b60405180910390f35b348015610327575f5ffd5b50610342600480360381019061033d919061215b565b611c1f565b005b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c9906121f5565b60405180910390fd5b5f8190505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016104109190612047565b602060405180830381865afa15801561042b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044f9190612227565b90505f8111610493576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048a9061229c565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016104ee9291906122e9565b6020604051808303815f875af115801561050a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061052e9190612345565b50505050565b6060805f5f8490508073ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015610584573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f820116820180604052508101906105ac919061248e565b93508073ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b81526004015f60405180830381865afa1580156105f6573d5f5f3e3d5ffd5b505050506040513d5f823e3d601f19601f8201168201806040525081019061061e919061248e565b92508073ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015610669573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068d91906124e9565b9150509193909250565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610725576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071c906121f5565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f34111561083f5760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004015f604051808303818588803b1580156107fc575f5ffd5b505af115801561080e573d5f5f3e3d5ffd5b505050505060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16935034915061093e565b5f8211610881576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108789061255e565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016108be9392919061257c565b6020604051808303815f875af11580156108da573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108fe9190612345565b61093d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610934906125fb565b60405180910390fd5b5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109965760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1692505b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a16ebf33336040518263ffffffff1660e01b81526004016109f19190612047565b602060405180830381865afa158015610a0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3091906124e9565b90505f60015f8360ff1660ff1681526020019081526020015f205f015f9054906101000a900461ffff1690505f6127108261ffff1686610a709190612646565b610a7a91906126b4565b90505f8186610a8991906126e4565b90505f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633149f464336040518263ffffffff1660e01b8152600401610ae69190612047565b602060405180830381865afa158015610b01573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b25919061272b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e3b575f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a16ebf33836040518263ffffffff1660e01b8152600401610bb59190612756565b602060405180830381865afa158015610bd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bf491906124e9565b90505f60015f8360ff1660ff1681526020019081526020015f205f0160029054906101000a900461ffff1690505f6127108261ffff1687610c359190612646565b610c3f91906126b4565b90505f811115610e37578086610c5591906126e4565b955060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168c73ffffffffffffffffffffffffffffffffffffffff1603610d7b5760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610d05919061276f565b5f604051808303815f87803b158015610d1c575f5ffd5b505af1158015610d2e573d5f5f3e3d5ffd5b505050508373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610d75573d5f5f3e3d5ffd5b50610e36565b8b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb85836040518363ffffffff1660e01b8152600401610db69291906122e9565b6020604051808303815f875af1158015610dd2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df69190612345565b610e35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2c906127d2565b60405180910390fd5b5b5b5050505b5f831115610f1e578873ffffffffffffffffffffffffffffffffffffffff1663a9059cbb5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856040518363ffffffff1660e01b8152600401610e9e9291906122e9565b6020604051808303815f875af1158015610eba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ede9190612345565b610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f149061283a565b60405180910390fd5b5b818973ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e3060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401610f7b929190612858565b602060405180830381865afa158015610f96573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fba9190612227565b101561107e578873ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f80000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b815260040161103c9291906128b8565b6020604051808303815f875af1158015611058573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107c9190612345565b505b5f6040518061010001604052808b73ffffffffffffffffffffffffffffffffffffffff1681526020018a73ffffffffffffffffffffffffffffffffffffffff1681526020018862ffffff16815260200160045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff1614611128573361112a565b305b73ffffffffffffffffffffffffffffffffffffffff1681526020016103844261115391906128df565b81526020018481526020015f81526020015f73ffffffffffffffffffffffffffffffffffffffff1681525090505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663414bf389836040518263ffffffff1660e01b81526004016111db91906129ee565b6020604051808303815f875af11580156111f7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061121b9190612227565b905060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff16036113a25760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b81526004016112cb919061276f565b5f604051808303815f87803b1580156112e2575f5ffd5b505af11580156112f4573d5f5f3e3d5ffd5b505050505f3373ffffffffffffffffffffffffffffffffffffffff168260405161131d90612a35565b5f6040518083038185875af1925050503d805f8114611357576040519150601f19603f3d011682016040523d82523d5f602084013e61135c565b606091505b50509050806113a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139790612a93565b60405180910390fd5b505b5050505050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461143d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611434906121f5565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634aa4a4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061150b919061272b565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167f80000000000000000000000000000000000000000000000000000000000000006040518363ffffffff1660e01b81526004016115e79291906128b8565b6020604051808303815f875af1158015611603573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116279190612345565b5050565b5f5f5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146116665784611689565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90505f5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146116c557846116e8565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611755573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611779919061272b565b90505f8173ffffffffffffffffffffffffffffffffffffffff16631698ee828585896040518463ffffffff1660e01b81526004016117b993929190612ac0565b602060405180830381865afa1580156117d4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f8919061272b565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611868576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185f90612b3f565b60405180910390fd5b5f8190508073ffffffffffffffffffffffffffffffffffffffff16633850c7bd6040518163ffffffff1660e01b815260040160e060405180830381865afa1580156118b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d99190612bd1565b9091929394509091929350909192509091509050508096505050505050509392505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461198c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611983906121f5565b60405180910390fd5b5f4790505f81116119d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c990612cb8565b60405180910390fd5b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611a35573d5f5f3e3d5ffd5b5050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae2906121f5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5090612d20565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6001602052805f5260405f205f91509050805f015f9054906101000a900461ffff1690805f0160029054906101000a900461ffff16905082565b8160015f8560ff1660ff1681526020019081526020015f205f015f6101000a81548161ffff021916908361ffff1602179055508060015f8560ff1660ff1681526020019081526020015f205f0160026101000a81548161ffff021916908361ffff160217905550505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611cc582611c9c565b9050919050565b611cd581611cbb565b8114611cdf575f5ffd5b50565b5f81359050611cf081611ccc565b92915050565b5f60208284031215611d0b57611d0a611c94565b5b5f611d1884828501611ce2565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611d6382611d21565b611d6d8185611d2b565b9350611d7d818560208601611d3b565b611d8681611d49565b840191505092915050565b5f60ff82169050919050565b611da681611d91565b82525050565b5f6060820190508181035f830152611dc48186611d59565b90508181036020830152611dd88185611d59565b9050611de76040830184611d9d565b949350505050565b5f819050919050565b5f611e12611e0d611e0884611c9c565b611def565b611c9c565b9050919050565b5f611e2382611df8565b9050919050565b5f611e3482611e19565b9050919050565b611e4481611e2a565b82525050565b5f602082019050611e5d5f830184611e3b565b92915050565b5f819050919050565b611e7581611e63565b8114611e7f575f5ffd5b50565b5f81359050611e9081611e6c565b92915050565b5f62ffffff82169050919050565b611ead81611e96565b8114611eb7575f5ffd5b50565b5f81359050611ec881611ea4565b92915050565b5f5f5f5f60808587031215611ee657611ee5611c94565b5b5f611ef387828801611ce2565b9450506020611f0487828801611ce2565b9350506040611f1587828801611e82565b9250506060611f2687828801611eba565b91505092959194509250565b5f5f5f60608486031215611f4957611f48611c94565b5b5f611f5686828701611ce2565b9350506020611f6786828701611ce2565b9250506040611f7886828701611eba565b9150509250925092565b611f8b81611c9c565b82525050565b5f602082019050611fa45f830184611f82565b92915050565b5f611fb482611c9c565b9050919050565b611fc481611faa565b82525050565b5f602082019050611fdd5f830184611fbb565b92915050565b611fec81611faa565b8114611ff6575f5ffd5b50565b5f8135905061200781611fe3565b92915050565b5f6020828403121561202257612021611c94565b5b5f61202f84828501611ff9565b91505092915050565b61204181611cbb565b82525050565b5f60208201905061205a5f830184612038565b92915050565b5f61206a82611e19565b9050919050565b61207a81612060565b82525050565b5f6020820190506120935f830184612071565b92915050565b6120a281611d91565b81146120ac575f5ffd5b50565b5f813590506120bd81612099565b92915050565b5f602082840312156120d8576120d7611c94565b5b5f6120e5848285016120af565b91505092915050565b5f61ffff82169050919050565b612104816120ee565b82525050565b5f60408201905061211d5f8301856120fb565b61212a60208301846120fb565b9392505050565b61213a816120ee565b8114612144575f5ffd5b50565b5f8135905061215581612131565b92915050565b5f5f5f6060848603121561217257612171611c94565b5b5f61217f868287016120af565b935050602061219086828701612147565b92505060406121a186828701612147565b9150509250925092565b7f43616c6c6572206973206e6f7420746865206f776e65720000000000000000005f82015250565b5f6121df601783611d2b565b91506121ea826121ab565b602082019050919050565b5f6020820190508181035f83015261220c816121d3565b9050919050565b5f8151905061222181611e6c565b92915050565b5f6020828403121561223c5761223b611c94565b5b5f61224984828501612213565b91505092915050565b7f4e6f20746f6b656e2062616c616e636520746f207769746864726177000000005f82015250565b5f612286601c83611d2b565b915061229182612252565b602082019050919050565b5f6020820190508181035f8301526122b38161227a565b9050919050565b5f6122c482611e19565b9050919050565b6122d4816122ba565b82525050565b6122e381611e63565b82525050565b5f6040820190506122fc5f8301856122cb565b61230960208301846122da565b9392505050565b5f8115159050919050565b61232481612310565b811461232e575f5ffd5b50565b5f8151905061233f8161231b565b92915050565b5f6020828403121561235a57612359611c94565b5b5f61236784828501612331565b91505092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6123ae82611d49565b810181811067ffffffffffffffff821117156123cd576123cc612378565b5b80604052505050565b5f6123df611c8b565b90506123eb82826123a5565b919050565b5f67ffffffffffffffff82111561240a57612409612378565b5b61241382611d49565b9050602081019050919050565b5f61243261242d846123f0565b6123d6565b90508281526020810184848401111561244e5761244d612374565b5b612459848285611d3b565b509392505050565b5f82601f83011261247557612474612370565b5b8151612485848260208601612420565b91505092915050565b5f602082840312156124a3576124a2611c94565b5b5f82015167ffffffffffffffff8111156124c0576124bf611c98565b5b6124cc84828501612461565b91505092915050565b5f815190506124e381612099565b92915050565b5f602082840312156124fe576124fd611c94565b5b5f61250b848285016124d5565b91505092915050565b7f4d757374207370656369667920616e20616d6f756e7420746f207377617000005f82015250565b5f612548601e83611d2b565b915061255382612514565b602082019050919050565b5f6020820190508181035f8301526125758161253c565b9050919050565b5f60608201905061258f5f830186612038565b61259c6020830185612038565b6125a960408301846122da565b949350505050565b7f5472616e73666572206661696c656400000000000000000000000000000000005f82015250565b5f6125e5600f83611d2b565b91506125f0826125b1565b602082019050919050565b5f6020820190508181035f830152612612816125d9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61265082611e63565b915061265b83611e63565b925082820261266981611e63565b915082820484148315176126805761267f612619565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6126be82611e63565b91506126c983611e63565b9250826126d9576126d8612687565b5b828204905092915050565b5f6126ee82611e63565b91506126f983611e63565b925082820390508181111561271157612710612619565b5b92915050565b5f8151905061272581611ccc565b92915050565b5f602082840312156127405761273f611c94565b5b5f61274d84828501612717565b91505092915050565b5f6020820190506127695f8301846122cb565b92915050565b5f6020820190506127825f8301846122da565b92915050565b7f436f6d6d697373696f6e207472616e73666572206661696c65640000000000005f82015250565b5f6127bc601a83611d2b565b91506127c782612788565b602082019050919050565b5f6020820190508181035f8301526127e9816127b0565b9050919050565b7f466565207472616e73666572206661696c6564000000000000000000000000005f82015250565b5f612824601383611d2b565b915061282f826127f0565b602082019050919050565b5f6020820190508181035f83015261285181612818565b9050919050565b5f60408201905061286b5f830185612038565b6128786020830184612038565b9392505050565b5f819050919050565b5f6128a261289d6128988461287f565b611def565b611e63565b9050919050565b6128b281612888565b82525050565b5f6040820190506128cb5f830185612038565b6128d860208301846128a9565b9392505050565b5f6128e982611e63565b91506128f483611e63565b925082820190508082111561290c5761290b612619565b5b92915050565b61291b81611cbb565b82525050565b61292a81611e96565b82525050565b61293981611e63565b82525050565b61294881611c9c565b82525050565b61010082015f8201516129635f850182612912565b5060208201516129766020850182612912565b5060408201516129896040850182612921565b50606082015161299c6060850182612912565b5060808201516129af6080850182612930565b5060a08201516129c260a0850182612930565b5060c08201516129d560c0850182612930565b5060e08201516129e860e085018261293f565b50505050565b5f61010082019050612a025f83018461294e565b92915050565b5f81905092915050565b50565b5f612a205f83612a08565b9150612a2b82612a12565b5f82019050919050565b5f612a3f82612a15565b9150819050919050565b7f4661696c656420746f2073656e642045544800000000000000000000000000005f82015250565b5f612a7d601283611d2b565b9150612a8882612a49565b602082019050919050565b5f6020820190508181035f830152612aaa81612a71565b9050919050565b612aba81611e96565b82525050565b5f606082019050612ad35f830186612038565b612ae06020830185612038565b612aed6040830184612ab1565b949350505050565b7f506f6f6c20646f6573206e6f74206578697374000000000000000000000000005f82015250565b5f612b29601383611d2b565b9150612b3482612af5565b602082019050919050565b5f6020820190508181035f830152612b5681612b1d565b9050919050565b612b6681611c9c565b8114612b70575f5ffd5b50565b5f81519050612b8181612b5d565b92915050565b5f8160020b9050919050565b612b9c81612b87565b8114612ba6575f5ffd5b50565b5f81519050612bb781612b93565b92915050565b5f81519050612bcb81612131565b92915050565b5f5f5f5f5f5f5f60e0888a031215612bec57612beb611c94565b5b5f612bf98a828b01612b73565b9750506020612c0a8a828b01612ba9565b9650506040612c1b8a828b01612bbd565b9550506060612c2c8a828b01612bbd565b9450506080612c3d8a828b01612bbd565b93505060a0612c4e8a828b016124d5565b92505060c0612c5f8a828b01612331565b91505092959891949750929550565b7f4e6f2045544820746f20776974686472617700000000000000000000000000005f82015250565b5f612ca2601283611d2b565b9150612cad82612c6e565b602082019050919050565b5f6020820190508181035f830152612ccf81612c96565b9050919050565b7f4e6577206f776e657220697320746865207a65726f20616464726573730000005f82015250565b5f612d0a601d83611d2b565b9150612d1582612cd6565b602082019050919050565b5f6020820190508181035f830152612d3781612cfe565b905091905056fea2646970667358221220d36cdb72c1ea8aeeedfd3d76667d6d0b620c97a3e3f701199ede2e937b3c812f64736f6c634300081c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000e592427a0aece92de3edee1f18e0157c058615640000000000000000000000009f0022c88314df8686355ce3e87acc269296c20b

-----Decoded View---------------
Arg [0] : _swapRouter (address): 0xE592427A0AEce92De3Edee1F18E0157C05861564
Arg [1] : _feeTracker (address): 0x9f0022C88314DF8686355CE3e87acc269296C20B

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564
Arg [1] : 0000000000000000000000009f0022c88314df8686355ce3e87acc269296c20b


Deployed Bytecode Sourcemap

60:6913:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5757:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6655:315;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;2291:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1043:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2606:2868;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2070:213;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6041:606;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5513:196;;;;;;;;;;;;;:::i;:::-;;86:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2423:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1081:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1001:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;949:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1793:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5757:276;1179:5;;;;;;;;;;;1165:19;;:10;:19;;;1157:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;5834:12:::1;5856:5;5834:28;;5873:15;5891:5;:15;;;5915:4;5891:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5873:48;;5950:1;5940:7;:11;5932:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;5995:5;:14;;;6010:5;;;;;;;;;;;6017:7;5995:30;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5823:210;;5757:276:::0;:::o;6655:315::-;6720:18;6740:20;6762:14;6789:21;6820:12;6789:44;;6851:14;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6844:28;;6892:14;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6883:32;;6937:14;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6926:36;;6778:192;6655:315;;;;;:::o;2291:124::-;1179:5;;;;;;;;;;;1165:19;;:10;:19;;;1157:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2395:11:::1;2370:10;;:37;;;;;;;;;;;;;;;;;;2291:124:::0;:::o;1043:29::-;;;;;;;;;;;;;:::o;2606:2868::-;2799:1;2787:9;:13;2783:343;;;2823:4;;;;;;;;;;;2817:19;;;2844:9;2817:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2881:4;;;;;;;;;;;2871:14;;2911:9;2900:20;;2783:343;;;2970:1;2959:8;:12;2951:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;3036:7;3029:28;;;3058:10;3078:4;3085:8;3029:65;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3021:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;2783:343;3157:1;3139:20;;:8;:20;;;3136:93;;3186:4;;;;;;;;;;;3175:15;;3136:93;3241:15;3259:10;;;;;;;;;;;:27;;;3287:10;3259:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3241:57;;3309:17;3329:10;:21;3340:9;3329:21;;;;;;;;;;;;;;;:35;;;;;;;;;;;;3309:55;;3375:14;3418:5;3404:10;3393:21;;:8;:21;;;;:::i;:::-;3392:31;;;;:::i;:::-;3375:48;;3434:21;3469:9;3458:8;:20;;;;:::i;:::-;3434:44;;3499:24;3534:10;;;;;;;;;;;:28;;;3563:10;3534:40;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3499:76;;3610:1;3590:22;;:8;:22;;;3586:733;;3629:19;3651:10;;;;;;;;;;;:27;;;3679:8;3651:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3629:59;;3703:32;3738:10;:25;3749:13;3738:25;;;;;;;;;;;;;;;:57;;;;;;;;;;;;3703:92;;3810:21;3876:5;3847:25;3835:37;;:9;:37;;;;:::i;:::-;3834:47;;;;:::i;:::-;3810:71;;3930:1;3913:16;:18;3910:398;;;3964:16;3951:29;;;;;:::i;:::-;;;4011:4;;;;;;;;;;;4002:13;;:7;:13;;;3999:294;;4045:4;;;;;;;;;;;4039:20;;;4060:16;4039:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4100:8;:17;;:35;4118:16;4100:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3999:294;;;4197:7;4190:24;;;4215:8;4225:16;4190:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4182:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;3999:294;3910:398;3614:705;;;3586:733;4399:1;4389:9;:11;4386:116;;;4431:7;4424:24;;;4449:5;;;;;;;;;;;4456:9;4424:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4416:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;4386:116;4580:16;4524:7;4517:25;;;4551:4;4565:10;;;;;;;;;;;4517:60;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;4514:149;;;4618:7;4611:23;;;4643:10;;;;;;;;;;;4656:6;4611:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4514:149;4676:48;4727:379;;;;;;;;4786:7;4727:379;;;;;;4818:8;4727:379;;;;;;4846:7;4727:379;;;;;;4890:4;;;;;;;;;;;4880:14;;:8;:14;;;4879:41;;4910:10;4879:41;;;4904:4;4879:41;4727:379;;;;;;4963:10;4945:15;:28;;;;:::i;:::-;4727:379;;;;4998:16;4727:379;;;;5047:1;4727:379;;;;5082:1;4727:379;;;;;4676:430;;5119:14;5136:10;;;;;;;;;;;:27;;;5164:6;5136:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5119:52;;5279:4;;;;;;;;;;;5269:14;;:8;:14;;;5265:202;;5306:4;;;;;;;;;;;5300:20;;;5321:9;5300:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5347:12;5365:10;:15;;5388:9;5365:37;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5346:56;;;5425:7;5417:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;5285:182;5265:202;2707:2767;;;;;;;2606:2868;;;;:::o;2070:213::-;1179:5;;;;;;;;;;;1165:19;;:10;:19;;;1157:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2167:11:::1;2142:10;;:37;;;;;;;;;;;;;;;;;;2197:10;;;;;;;;;;;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2190:4;;:25;;;;;;;;;;;;;;;;;;2233:4;;;;;;;;;;;2226:20;;;2255:10;;;;;;;;;;;2268:6;2226:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2070:213:::0;:::o;6041:606::-;6128:20;6161:22;6204:1;6186:20;;:6;:20;;;:36;;6216:6;6186:36;;;6209:4;;;;;;;;;;;6186:36;6161:61;;6233:22;6276:1;6258:20;;:6;:20;;;:36;;6288:6;6258:36;;;6281:4;;;;;;;;;;;6258:36;6233:61;;6307:25;6353:10;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6307:67;;6385:19;6407:7;:15;;;6423:14;6439;6455:7;6407:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6385:78;;6505:1;6482:25;;:11;:25;;;6474:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;6544:19;6581:11;6544:49;;6627:4;:10;;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6604:35;;;;;;;;;;;;;;;;;;;;;;;;;6150:497;;;;;6041:606;;;;;:::o;5513:196::-;1179:5;;;;;;;;;;;1165:19;;:10;:19;;;1157:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;5575:15:::1;5593:21;5575:39;;5643:1;5633:7;:11;5625:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;5678:5;;;;;;;;;;;:14;;:23;5693:7;5678:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5564:145;5513:196::o:0;86:28::-;;;;;;;;;;;;;:::o;2423:175::-;1179:5;;;;;;;;;;;1165:19;;:10;:19;;;1157:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;2527:1:::1;2507:22;;:8;:22;;::::0;2499:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2582:8;2574:5;;:16;;;;;;;;;;;;;;;;;;2423:175:::0;:::o;1081:19::-;;;;;;;;;;;;;:::o;1001:29::-;;;;;;;;;;;;;:::o;949:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1793:269::-;1944:14;1909:10;:18;1920:6;1909:18;;;;;;;;;;;;;;;:32;;;:49;;;;;;;;;;;;;;;;;;2022:32;1969:10;:18;1980:6;1969:18;;;;;;;;;;;;;;;:50;;;:85;;;;;;;;;;;;;;;;;;1793:269;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:139::-;1545:6;1540:3;1535;1529:23;1586:1;1577:6;1572:3;1568:16;1561:27;1456:139;;;:::o;1601:102::-;1642:6;1693:2;1689:7;1684:2;1677:5;1673:14;1669:28;1659:38;;1601:102;;;:::o;1709:377::-;1797:3;1825:39;1858:5;1825:39;:::i;:::-;1880:71;1944:6;1939:3;1880:71;:::i;:::-;1873:78;;1960:65;2018:6;2013:3;2006:4;1999:5;1995:16;1960:65;:::i;:::-;2050:29;2072:6;2050:29;:::i;:::-;2045:3;2041:39;2034:46;;1801:285;1709:377;;;;:::o;2092:86::-;2127:7;2167:4;2160:5;2156:16;2145:27;;2092:86;;;:::o;2184:112::-;2267:22;2283:5;2267:22;:::i;:::-;2262:3;2255:35;2184:112;;:::o;2302:616::-;2487:4;2525:2;2514:9;2510:18;2502:26;;2574:9;2568:4;2564:20;2560:1;2549:9;2545:17;2538:47;2602:78;2675:4;2666:6;2602:78;:::i;:::-;2594:86;;2727:9;2721:4;2717:20;2712:2;2701:9;2697:18;2690:48;2755:78;2828:4;2819:6;2755:78;:::i;:::-;2747:86;;2843:68;2907:2;2896:9;2892:18;2883:6;2843:68;:::i;:::-;2302:616;;;;;;:::o;2924:60::-;2952:3;2973:5;2966:12;;2924:60;;;:::o;2990:142::-;3040:9;3073:53;3091:34;3100:24;3118:5;3100:24;:::i;:::-;3091:34;:::i;:::-;3073:53;:::i;:::-;3060:66;;2990:142;;;:::o;3138:126::-;3188:9;3221:37;3252:5;3221:37;:::i;:::-;3208:50;;3138:126;;;:::o;3270:145::-;3339:9;3372:37;3403:5;3372:37;:::i;:::-;3359:50;;3270:145;;;:::o;3421:169::-;3527:56;3577:5;3527:56;:::i;:::-;3522:3;3515:69;3421:169;;:::o;3596:260::-;3708:4;3746:2;3735:9;3731:18;3723:26;;3759:90;3846:1;3835:9;3831:17;3822:6;3759:90;:::i;:::-;3596:260;;;;:::o;3862:77::-;3899:7;3928:5;3917:16;;3862:77;;;:::o;3945:122::-;4018:24;4036:5;4018:24;:::i;:::-;4011:5;4008:35;3998:63;;4057:1;4054;4047:12;3998:63;3945:122;:::o;4073:139::-;4119:5;4157:6;4144:20;4135:29;;4173:33;4200:5;4173:33;:::i;:::-;4073:139;;;;:::o;4218:91::-;4254:7;4294:8;4287:5;4283:20;4272:31;;4218:91;;;:::o;4315:120::-;4387:23;4404:5;4387:23;:::i;:::-;4380:5;4377:34;4367:62;;4425:1;4422;4415:12;4367:62;4315:120;:::o;4441:137::-;4486:5;4524:6;4511:20;4502:29;;4540:32;4566:5;4540:32;:::i;:::-;4441:137;;;;:::o;4584:763::-;4669:6;4677;4685;4693;4742:3;4730:9;4721:7;4717:23;4713:33;4710:120;;;4749:79;;:::i;:::-;4710:120;4869:1;4894:53;4939:7;4930:6;4919:9;4915:22;4894:53;:::i;:::-;4884:63;;4840:117;4996:2;5022:53;5067:7;5058:6;5047:9;5043:22;5022:53;:::i;:::-;5012:63;;4967:118;5124:2;5150:53;5195:7;5186:6;5175:9;5171:22;5150:53;:::i;:::-;5140:63;;5095:118;5252:2;5278:52;5322:7;5313:6;5302:9;5298:22;5278:52;:::i;:::-;5268:62;;5223:117;4584:763;;;;;;;:::o;5353:617::-;5429:6;5437;5445;5494:2;5482:9;5473:7;5469:23;5465:32;5462:119;;;5500:79;;:::i;:::-;5462:119;5620:1;5645:53;5690:7;5681:6;5670:9;5666:22;5645:53;:::i;:::-;5635:63;;5591:117;5747:2;5773:53;5818:7;5809:6;5798:9;5794:22;5773:53;:::i;:::-;5763:63;;5718:118;5875:2;5901:52;5945:7;5936:6;5925:9;5921:22;5901:52;:::i;:::-;5891:62;;5846:117;5353:617;;;;;:::o;5976:118::-;6063:24;6081:5;6063:24;:::i;:::-;6058:3;6051:37;5976:118;;:::o;6100:222::-;6193:4;6231:2;6220:9;6216:18;6208:26;;6244:71;6312:1;6301:9;6297:17;6288:6;6244:71;:::i;:::-;6100:222;;;;:::o;6328:104::-;6373:7;6402:24;6420:5;6402:24;:::i;:::-;6391:35;;6328:104;;;:::o;6438:142::-;6541:32;6567:5;6541:32;:::i;:::-;6536:3;6529:45;6438:142;;:::o;6586:254::-;6695:4;6733:2;6722:9;6718:18;6710:26;;6746:87;6830:1;6819:9;6815:17;6806:6;6746:87;:::i;:::-;6586:254;;;;:::o;6846:138::-;6927:32;6953:5;6927:32;:::i;:::-;6920:5;6917:43;6907:71;;6974:1;6971;6964:12;6907:71;6846:138;:::o;6990:155::-;7044:5;7082:6;7069:20;7060:29;;7098:41;7133:5;7098:41;:::i;:::-;6990:155;;;;:::o;7151:345::-;7218:6;7267:2;7255:9;7246:7;7242:23;7238:32;7235:119;;;7273:79;;:::i;:::-;7235:119;7393:1;7418:61;7471:7;7462:6;7451:9;7447:22;7418:61;:::i;:::-;7408:71;;7364:125;7151:345;;;;:::o;7502:118::-;7589:24;7607:5;7589:24;:::i;:::-;7584:3;7577:37;7502:118;;:::o;7626:222::-;7719:4;7757:2;7746:9;7742:18;7734:26;;7770:71;7838:1;7827:9;7823:17;7814:6;7770:71;:::i;:::-;7626:222;;;;:::o;7854:145::-;7923:9;7956:37;7987:5;7956:37;:::i;:::-;7943:50;;7854:145;;;:::o;8005:169::-;8111:56;8161:5;8111:56;:::i;:::-;8106:3;8099:69;8005:169;;:::o;8180:260::-;8292:4;8330:2;8319:9;8315:18;8307:26;;8343:90;8430:1;8419:9;8415:17;8406:6;8343:90;:::i;:::-;8180:260;;;;:::o;8446:118::-;8517:22;8533:5;8517:22;:::i;:::-;8510:5;8507:33;8497:61;;8554:1;8551;8544:12;8497:61;8446:118;:::o;8570:135::-;8614:5;8652:6;8639:20;8630:29;;8668:31;8693:5;8668:31;:::i;:::-;8570:135;;;;:::o;8711:325::-;8768:6;8817:2;8805:9;8796:7;8792:23;8788:32;8785:119;;;8823:79;;:::i;:::-;8785:119;8943:1;8968:51;9011:7;9002:6;8991:9;8987:22;8968:51;:::i;:::-;8958:61;;8914:115;8711:325;;;;:::o;9042:89::-;9078:7;9118:6;9111:5;9107:18;9096:29;;9042:89;;;:::o;9137:115::-;9222:23;9239:5;9222:23;:::i;:::-;9217:3;9210:36;9137:115;;:::o;9258:324::-;9375:4;9413:2;9402:9;9398:18;9390:26;;9426:69;9492:1;9481:9;9477:17;9468:6;9426:69;:::i;:::-;9505:70;9571:2;9560:9;9556:18;9547:6;9505:70;:::i;:::-;9258:324;;;;;:::o;9588:120::-;9660:23;9677:5;9660:23;:::i;:::-;9653:5;9650:34;9640:62;;9698:1;9695;9688:12;9640:62;9588:120;:::o;9714:137::-;9759:5;9797:6;9784:20;9775:29;;9813:32;9839:5;9813:32;:::i;:::-;9714:137;;;;:::o;9857:611::-;9930:6;9938;9946;9995:2;9983:9;9974:7;9970:23;9966:32;9963:119;;;10001:79;;:::i;:::-;9963:119;10121:1;10146:51;10189:7;10180:6;10169:9;10165:22;10146:51;:::i;:::-;10136:61;;10092:115;10246:2;10272:52;10316:7;10307:6;10296:9;10292:22;10272:52;:::i;:::-;10262:62;;10217:117;10373:2;10399:52;10443:7;10434:6;10423:9;10419:22;10399:52;:::i;:::-;10389:62;;10344:117;9857:611;;;;;:::o;10474:173::-;10614:25;10610:1;10602:6;10598:14;10591:49;10474:173;:::o;10653:366::-;10795:3;10816:67;10880:2;10875:3;10816:67;:::i;:::-;10809:74;;10892:93;10981:3;10892:93;:::i;:::-;11010:2;11005:3;11001:12;10994:19;;10653:366;;;:::o;11025:419::-;11191:4;11229:2;11218:9;11214:18;11206:26;;11278:9;11272:4;11268:20;11264:1;11253:9;11249:17;11242:47;11306:131;11432:4;11306:131;:::i;:::-;11298:139;;11025:419;;;:::o;11450:143::-;11507:5;11538:6;11532:13;11523:22;;11554:33;11581:5;11554:33;:::i;:::-;11450:143;;;;:::o;11599:351::-;11669:6;11718:2;11706:9;11697:7;11693:23;11689:32;11686:119;;;11724:79;;:::i;:::-;11686:119;11844:1;11869:64;11925:7;11916:6;11905:9;11901:22;11869:64;:::i;:::-;11859:74;;11815:128;11599:351;;;;:::o;11956:178::-;12096:30;12092:1;12084:6;12080:14;12073:54;11956:178;:::o;12140:366::-;12282:3;12303:67;12367:2;12362:3;12303:67;:::i;:::-;12296:74;;12379:93;12468:3;12379:93;:::i;:::-;12497:2;12492:3;12488:12;12481:19;;12140:366;;;:::o;12512:419::-;12678:4;12716:2;12705:9;12701:18;12693:26;;12765:9;12759:4;12755:20;12751:1;12740:9;12736:17;12729:47;12793:131;12919:4;12793:131;:::i;:::-;12785:139;;12512:419;;;:::o;12937:134::-;12995:9;13028:37;13059:5;13028:37;:::i;:::-;13015:50;;12937:134;;;:::o;13077:147::-;13172:45;13211:5;13172:45;:::i;:::-;13167:3;13160:58;13077:147;;:::o;13230:118::-;13317:24;13335:5;13317:24;:::i;:::-;13312:3;13305:37;13230:118;;:::o;13354:348::-;13483:4;13521:2;13510:9;13506:18;13498:26;;13534:79;13610:1;13599:9;13595:17;13586:6;13534:79;:::i;:::-;13623:72;13691:2;13680:9;13676:18;13667:6;13623:72;:::i;:::-;13354:348;;;;;:::o;13708:90::-;13742:7;13785:5;13778:13;13771:21;13760:32;;13708:90;;;:::o;13804:116::-;13874:21;13889:5;13874:21;:::i;:::-;13867:5;13864:32;13854:60;;13910:1;13907;13900:12;13854:60;13804:116;:::o;13926:137::-;13980:5;14011:6;14005:13;13996:22;;14027:30;14051:5;14027:30;:::i;:::-;13926:137;;;;:::o;14069:345::-;14136:6;14185:2;14173:9;14164:7;14160:23;14156:32;14153:119;;;14191:79;;:::i;:::-;14153:119;14311:1;14336:61;14389:7;14380:6;14369:9;14365:22;14336:61;:::i;:::-;14326:71;;14282:125;14069:345;;;;:::o;14420:117::-;14529:1;14526;14519:12;14543:117;14652:1;14649;14642:12;14666:180;14714:77;14711:1;14704:88;14811:4;14808:1;14801:15;14835:4;14832:1;14825:15;14852:281;14935:27;14957:4;14935:27;:::i;:::-;14927:6;14923:40;15065:6;15053:10;15050:22;15029:18;15017:10;15014:34;15011:62;15008:88;;;15076:18;;:::i;:::-;15008:88;15116:10;15112:2;15105:22;14895:238;14852:281;;:::o;15139:129::-;15173:6;15200:20;;:::i;:::-;15190:30;;15229:33;15257:4;15249:6;15229:33;:::i;:::-;15139:129;;;:::o;15274:308::-;15336:4;15426:18;15418:6;15415:30;15412:56;;;15448:18;;:::i;:::-;15412:56;15486:29;15508:6;15486:29;:::i;:::-;15478:37;;15570:4;15564;15560:15;15552:23;;15274:308;;;:::o;15588:434::-;15677:5;15702:66;15718:49;15760:6;15718:49;:::i;:::-;15702:66;:::i;:::-;15693:75;;15791:6;15784:5;15777:21;15829:4;15822:5;15818:16;15867:3;15858:6;15853:3;15849:16;15846:25;15843:112;;;15874:79;;:::i;:::-;15843:112;15964:52;16009:6;16004:3;15999;15964:52;:::i;:::-;15683:339;15588:434;;;;;:::o;16042:355::-;16109:5;16158:3;16151:4;16143:6;16139:17;16135:27;16125:122;;16166:79;;:::i;:::-;16125:122;16276:6;16270:13;16301:90;16387:3;16379:6;16372:4;16364:6;16360:17;16301:90;:::i;:::-;16292:99;;16115:282;16042:355;;;;:::o;16403:524::-;16483:6;16532:2;16520:9;16511:7;16507:23;16503:32;16500:119;;;16538:79;;:::i;:::-;16500:119;16679:1;16668:9;16664:17;16658:24;16709:18;16701:6;16698:30;16695:117;;;16731:79;;:::i;:::-;16695:117;16836:74;16902:7;16893:6;16882:9;16878:22;16836:74;:::i;:::-;16826:84;;16629:291;16403:524;;;;:::o;16933:139::-;16988:5;17019:6;17013:13;17004:22;;17035:31;17060:5;17035:31;:::i;:::-;16933:139;;;;:::o;17078:347::-;17146:6;17195:2;17183:9;17174:7;17170:23;17166:32;17163:119;;;17201:79;;:::i;:::-;17163:119;17321:1;17346:62;17400:7;17391:6;17380:9;17376:22;17346:62;:::i;:::-;17336:72;;17292:126;17078:347;;;;:::o;17431:180::-;17571:32;17567:1;17559:6;17555:14;17548:56;17431:180;:::o;17617:366::-;17759:3;17780:67;17844:2;17839:3;17780:67;:::i;:::-;17773:74;;17856:93;17945:3;17856:93;:::i;:::-;17974:2;17969:3;17965:12;17958:19;;17617:366;;;:::o;17989:419::-;18155:4;18193:2;18182:9;18178:18;18170:26;;18242:9;18236:4;18232:20;18228:1;18217:9;18213:17;18206:47;18270:131;18396:4;18270:131;:::i;:::-;18262:139;;17989:419;;;:::o;18414:442::-;18563:4;18601:2;18590:9;18586:18;18578:26;;18614:71;18682:1;18671:9;18667:17;18658:6;18614:71;:::i;:::-;18695:72;18763:2;18752:9;18748:18;18739:6;18695:72;:::i;:::-;18777;18845:2;18834:9;18830:18;18821:6;18777:72;:::i;:::-;18414:442;;;;;;:::o;18862:165::-;19002:17;18998:1;18990:6;18986:14;18979:41;18862:165;:::o;19033:366::-;19175:3;19196:67;19260:2;19255:3;19196:67;:::i;:::-;19189:74;;19272:93;19361:3;19272:93;:::i;:::-;19390:2;19385:3;19381:12;19374:19;;19033:366;;;:::o;19405:419::-;19571:4;19609:2;19598:9;19594:18;19586:26;;19658:9;19652:4;19648:20;19644:1;19633:9;19629:17;19622:47;19686:131;19812:4;19686:131;:::i;:::-;19678:139;;19405:419;;;:::o;19830:180::-;19878:77;19875:1;19868:88;19975:4;19972:1;19965:15;19999:4;19996:1;19989:15;20016:410;20056:7;20079:20;20097:1;20079:20;:::i;:::-;20074:25;;20113:20;20131:1;20113:20;:::i;:::-;20108:25;;20168:1;20165;20161:9;20190:30;20208:11;20190:30;:::i;:::-;20179:41;;20369:1;20360:7;20356:15;20353:1;20350:22;20330:1;20323:9;20303:83;20280:139;;20399:18;;:::i;:::-;20280:139;20064:362;20016:410;;;;:::o;20432:180::-;20480:77;20477:1;20470:88;20577:4;20574:1;20567:15;20601:4;20598:1;20591:15;20618:185;20658:1;20675:20;20693:1;20675:20;:::i;:::-;20670:25;;20709:20;20727:1;20709:20;:::i;:::-;20704:25;;20748:1;20738:35;;20753:18;;:::i;:::-;20738:35;20795:1;20792;20788:9;20783:14;;20618:185;;;;:::o;20809:194::-;20849:4;20869:20;20887:1;20869:20;:::i;:::-;20864:25;;20903:20;20921:1;20903:20;:::i;:::-;20898:25;;20947:1;20944;20940:9;20932:17;;20971:1;20965:4;20962:11;20959:37;;;20976:18;;:::i;:::-;20959:37;20809:194;;;;:::o;21009:143::-;21066:5;21097:6;21091:13;21082:22;;21113:33;21140:5;21113:33;:::i;:::-;21009:143;;;;:::o;21158:351::-;21228:6;21277:2;21265:9;21256:7;21252:23;21248:32;21245:119;;;21283:79;;:::i;:::-;21245:119;21403:1;21428:64;21484:7;21475:6;21464:9;21460:22;21428:64;:::i;:::-;21418:74;;21374:128;21158:351;;;;:::o;21515:238::-;21616:4;21654:2;21643:9;21639:18;21631:26;;21667:79;21743:1;21732:9;21728:17;21719:6;21667:79;:::i;:::-;21515:238;;;;:::o;21759:222::-;21852:4;21890:2;21879:9;21875:18;21867:26;;21903:71;21971:1;21960:9;21956:17;21947:6;21903:71;:::i;:::-;21759:222;;;;:::o;21987:176::-;22127:28;22123:1;22115:6;22111:14;22104:52;21987:176;:::o;22169:366::-;22311:3;22332:67;22396:2;22391:3;22332:67;:::i;:::-;22325:74;;22408:93;22497:3;22408:93;:::i;:::-;22526:2;22521:3;22517:12;22510:19;;22169:366;;;:::o;22541:419::-;22707:4;22745:2;22734:9;22730:18;22722:26;;22794:9;22788:4;22784:20;22780:1;22769:9;22765:17;22758:47;22822:131;22948:4;22822:131;:::i;:::-;22814:139;;22541:419;;;:::o;22966:169::-;23106:21;23102:1;23094:6;23090:14;23083:45;22966:169;:::o;23141:366::-;23283:3;23304:67;23368:2;23363:3;23304:67;:::i;:::-;23297:74;;23380:93;23469:3;23380:93;:::i;:::-;23498:2;23493:3;23489:12;23482:19;;23141:366;;;:::o;23513:419::-;23679:4;23717:2;23706:9;23702:18;23694:26;;23766:9;23760:4;23756:20;23752:1;23741:9;23737:17;23730:47;23794:131;23920:4;23794:131;:::i;:::-;23786:139;;23513:419;;;:::o;23938:332::-;24059:4;24097:2;24086:9;24082:18;24074:26;;24110:71;24178:1;24167:9;24163:17;24154:6;24110:71;:::i;:::-;24191:72;24259:2;24248:9;24244:18;24235:6;24191:72;:::i;:::-;23938:332;;;;;:::o;24276:161::-;24397:7;24426:5;24415:16;;24276:161;;;:::o;24443:310::-;24577:9;24610:137;24628:118;24637:108;24739:5;24637:108;:::i;:::-;24628:118;:::i;:::-;24610:137;:::i;:::-;24597:150;;24443:310;;;:::o;24759:299::-;24930:121;25045:5;24930:121;:::i;:::-;24925:3;24918:134;24759:299;;:::o;25064:500::-;25269:4;25307:2;25296:9;25292:18;25284:26;;25320:71;25388:1;25377:9;25373:17;25364:6;25320:71;:::i;:::-;25401:156;25553:2;25542:9;25538:18;25529:6;25401:156;:::i;:::-;25064:500;;;;;:::o;25570:191::-;25610:3;25629:20;25647:1;25629:20;:::i;:::-;25624:25;;25663:20;25681:1;25663:20;:::i;:::-;25658:25;;25706:1;25703;25699:9;25692:16;;25727:3;25724:1;25721:10;25718:36;;;25734:18;;:::i;:::-;25718:36;25570:191;;;;:::o;25767:108::-;25844:24;25862:5;25844:24;:::i;:::-;25839:3;25832:37;25767:108;;:::o;25881:105::-;25956:23;25973:5;25956:23;:::i;:::-;25951:3;25944:36;25881:105;;:::o;25992:108::-;26069:24;26087:5;26069:24;:::i;:::-;26064:3;26057:37;25992:108;;:::o;26106:::-;26183:24;26201:5;26183:24;:::i;:::-;26178:3;26171:37;26106:108;;:::o;26314:1623::-;26489:6;26484:3;26480:16;26581:4;26574:5;26570:16;26564:23;26600:63;26657:4;26652:3;26648:14;26634:12;26600:63;:::i;:::-;26506:167;26759:4;26752:5;26748:16;26742:23;26778:63;26835:4;26830:3;26826:14;26812:12;26778:63;:::i;:::-;26683:168;26932:4;26925:5;26921:16;26915:23;26951:61;27006:4;27001:3;26997:14;26983:12;26951:61;:::i;:::-;26861:161;27109:4;27102:5;27098:16;27092:23;27128:63;27185:4;27180:3;27176:14;27162:12;27128:63;:::i;:::-;27032:169;27287:4;27280:5;27276:16;27270:23;27306:63;27363:4;27358:3;27354:14;27340:12;27306:63;:::i;:::-;27211:168;27465:4;27458:5;27454:16;27448:23;27484:63;27541:4;27536:3;27532:14;27518:12;27484:63;:::i;:::-;27389:168;27651:4;27644:5;27640:16;27634:23;27670:63;27727:4;27722:3;27718:14;27704:12;27670:63;:::i;:::-;27567:176;27838:4;27831:5;27827:16;27821:23;27857:63;27914:4;27909:3;27905:14;27891:12;27857:63;:::i;:::-;27753:177;26458:1479;26314:1623;;:::o;27943:379::-;28114:4;28152:3;28141:9;28137:19;28129:27;;28166:149;28312:1;28301:9;28297:17;28288:6;28166:149;:::i;:::-;27943:379;;;;:::o;28328:147::-;28429:11;28466:3;28451:18;;28328:147;;;;:::o;28481:114::-;;:::o;28601:398::-;28760:3;28781:83;28862:1;28857:3;28781:83;:::i;:::-;28774:90;;28873:93;28962:3;28873:93;:::i;:::-;28991:1;28986:3;28982:11;28975:18;;28601:398;;;:::o;29005:379::-;29189:3;29211:147;29354:3;29211:147;:::i;:::-;29204:154;;29375:3;29368:10;;29005:379;;;:::o;29390:168::-;29530:20;29526:1;29518:6;29514:14;29507:44;29390:168;:::o;29564:366::-;29706:3;29727:67;29791:2;29786:3;29727:67;:::i;:::-;29720:74;;29803:93;29892:3;29803:93;:::i;:::-;29921:2;29916:3;29912:12;29905:19;;29564:366;;;:::o;29936:419::-;30102:4;30140:2;30129:9;30125:18;30117:26;;30189:9;30183:4;30179:20;30175:1;30164:9;30160:17;30153:47;30217:131;30343:4;30217:131;:::i;:::-;30209:139;;29936:419;;;:::o;30361:115::-;30446:23;30463:5;30446:23;:::i;:::-;30441:3;30434:36;30361:115;;:::o;30482:438::-;30629:4;30667:2;30656:9;30652:18;30644:26;;30680:71;30748:1;30737:9;30733:17;30724:6;30680:71;:::i;:::-;30761:72;30829:2;30818:9;30814:18;30805:6;30761:72;:::i;:::-;30843:70;30909:2;30898:9;30894:18;30885:6;30843:70;:::i;:::-;30482:438;;;;;;:::o;30926:169::-;31066:21;31062:1;31054:6;31050:14;31043:45;30926:169;:::o;31101:366::-;31243:3;31264:67;31328:2;31323:3;31264:67;:::i;:::-;31257:74;;31340:93;31429:3;31340:93;:::i;:::-;31458:2;31453:3;31449:12;31442:19;;31101:366;;;:::o;31473:419::-;31639:4;31677:2;31666:9;31662:18;31654:26;;31726:9;31720:4;31716:20;31712:1;31701:9;31697:17;31690:47;31754:131;31880:4;31754:131;:::i;:::-;31746:139;;31473:419;;;:::o;31898:122::-;31971:24;31989:5;31971:24;:::i;:::-;31964:5;31961:35;31951:63;;32010:1;32007;32000:12;31951:63;31898:122;:::o;32026:143::-;32083:5;32114:6;32108:13;32099:22;;32130:33;32157:5;32130:33;:::i;:::-;32026:143;;;;:::o;32175:90::-;32210:7;32253:5;32250:1;32239:20;32228:31;;32175:90;;;:::o;32271:118::-;32342:22;32358:5;32342:22;:::i;:::-;32335:5;32332:33;32322:61;;32379:1;32376;32369:12;32322:61;32271:118;:::o;32395:139::-;32450:5;32481:6;32475:13;32466:22;;32497:31;32522:5;32497:31;:::i;:::-;32395:139;;;;:::o;32540:141::-;32596:5;32627:6;32621:13;32612:22;;32643:32;32669:5;32643:32;:::i;:::-;32540:141;;;;:::o;32687:1271::-;32801:6;32809;32817;32825;32833;32841;32849;32898:3;32886:9;32877:7;32873:23;32869:33;32866:120;;;32905:79;;:::i;:::-;32866:120;33025:1;33050:64;33106:7;33097:6;33086:9;33082:22;33050:64;:::i;:::-;33040:74;;32996:128;33163:2;33189:62;33243:7;33234:6;33223:9;33219:22;33189:62;:::i;:::-;33179:72;;33134:127;33300:2;33326:63;33381:7;33372:6;33361:9;33357:22;33326:63;:::i;:::-;33316:73;;33271:128;33438:2;33464:63;33519:7;33510:6;33499:9;33495:22;33464:63;:::i;:::-;33454:73;;33409:128;33576:3;33603:63;33658:7;33649:6;33638:9;33634:22;33603:63;:::i;:::-;33593:73;;33547:129;33715:3;33742:62;33796:7;33787:6;33776:9;33772:22;33742:62;:::i;:::-;33732:72;;33686:128;33853:3;33880:61;33933:7;33924:6;33913:9;33909:22;33880:61;:::i;:::-;33870:71;;33824:127;32687:1271;;;;;;;;;;:::o;33964:168::-;34104:20;34100:1;34092:6;34088:14;34081:44;33964:168;:::o;34138:366::-;34280:3;34301:67;34365:2;34360:3;34301:67;:::i;:::-;34294:74;;34377:93;34466:3;34377:93;:::i;:::-;34495:2;34490:3;34486:12;34479:19;;34138:366;;;:::o;34510:419::-;34676:4;34714:2;34703:9;34699:18;34691:26;;34763:9;34757:4;34753:20;34749:1;34738:9;34734:17;34727:47;34791:131;34917:4;34791:131;:::i;:::-;34783:139;;34510:419;;;:::o;34935:179::-;35075:31;35071:1;35063:6;35059:14;35052:55;34935:179;:::o;35120:366::-;35262:3;35283:67;35347:2;35342:3;35283:67;:::i;:::-;35276:74;;35359:93;35448:3;35359:93;:::i;:::-;35477:2;35472:3;35468:12;35461:19;;35120:366;;;:::o;35492:419::-;35658:4;35696:2;35685:9;35681:18;35673:26;;35745:9;35739:4;35735:20;35731:1;35720:9;35716:17;35709:47;35773:131;35899:4;35773:131;:::i;:::-;35765:139;;35492:419;;;:::o

Swarm Source

ipfs://d36cdb72c1ea8aeeedfd3d76667d6d0b620c97a3e3f701199ede2e937b3c812f

Block Transaction Gas Used Reward
view all blocks produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.