Linea Testnet

Token

ERC-20: ShibaSwap LP Token (SSLP)
ERC-20

Overview

Max Total Supply

1.638288467276095736 SSLP

Holders

15

Market

Price

$0.00 @ 0.000000 ETH

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000001 SSLP
0x0000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
UniswapV2Pair

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at sepolia.lineascan.build/ on 2024-06-27
*/

// File: contracts/uniswapv2/libraries/SafeMath.sol



pragma solidity =0.6.12;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMathUniswap {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}

// File: contracts/uniswapv2/UniswapV2ERC20.sol



pragma solidity =0.6.12;


contract UniswapV2ERC20 {
    using SafeMathUniswap for uint;

    string public constant name = 'ShibaSwap LP Token';
    string public constant symbol = 'SSLP';
    uint8 public constant decimals = 18;
    uint  public totalSupply;
    mapping(address => uint) public balanceOf;
    mapping(address => mapping(address => uint)) public allowance;

    bytes32 public DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public nonces;

    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    constructor() public {
        uint chainId;
        assembly {
            chainId := chainid()
        }
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes(name)),
                keccak256(bytes('1')),
                chainId,
                address(this)
            )
        );
    }

    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint value) private {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint value) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external returns (bool) {
        if (allowance[from][msg.sender] != uint(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
        require(deadline >= block.timestamp, 'UniswapV2: EXPIRED');
        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
            )
        );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(recoveredAddress != address(0) && recoveredAddress == owner, 'UniswapV2: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }
}

// File: contracts/uniswapv2/libraries/Math.sol



pragma solidity =0.6.12;

// a library for performing various math operations

library Math {
    function min(uint x, uint y) internal pure returns (uint z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint y) internal pure returns (uint z) {
        if (y > 3) {
            z = y;
            uint x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

// File: contracts/uniswapv2/libraries/UQ112x112.sol



pragma solidity =0.6.12;

// a library for handling binary fixed point numbers (https://en.wikipedia.org/wiki/Q_(number_format))

// range: [0, 2**112 - 1]
// resolution: 1 / 2**112

library UQ112x112 {
    uint224 constant Q112 = 2**112;

    // encode a uint112 as a UQ112x112
    function encode(uint112 y) internal pure returns (uint224 z) {
        z = uint224(y) * Q112; // never overflows
    }

    // divide a UQ112x112 by a uint112, returning a UQ112x112
    function uqdiv(uint224 x, uint112 y) internal pure returns (uint224 z) {
        z = x / uint224(y);
    }
}

// File: contracts/uniswapv2/interfaces/IERC20.sol



pragma solidity >=0.5.0;

interface IERC20Uniswap {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

// File: contracts/uniswapv2/interfaces/IUniswapV2Factory.sol



pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function migrator() external view returns (address);

    function totalFeeTopCoin() external view returns (uint);
    function alphaTopCoin() external view returns (uint);
    function betaTopCoin() external view returns (uint);
    function totalFeeRegular() external view returns (uint);
    function alphaRegular() external view returns (uint);
    function betaRegular() external view returns (uint);

    function topCoins(address token) external view returns (bool isTopCoin);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function setMigrator(address) external;
}

// File: contracts/uniswapv2/interfaces/IUniswapV2Callee.sol



pragma solidity >=0.5.0;

interface IUniswapV2Callee {
    function uniswapV2Call(address sender, uint amount0, uint amount1, bytes calldata data) external;
}

// File: contracts/uniswapv2/UniswapV2Pair.sol



pragma solidity =0.6.12;








interface IMigrator {
    // Return the desired amount of liquidity token that the migrator wants.
    function desiredLiquidity() external view returns (uint256);
}

contract UniswapV2Pair is UniswapV2ERC20 {
    using SafeMathUniswap  for uint;
    using UQ112x112 for uint224;

    uint public constant MINIMUM_LIQUIDITY = 10**3;
    bytes4 private constant SELECTOR = bytes4(keccak256(bytes('transfer(address,uint256)')));

    address public factory;
    address public token0;
    address public token1;

    uint112 private reserve0;           // uses single storage slot, accessible via getReserves
    uint112 private reserve1;           // uses single storage slot, accessible via getReserves
    uint32  private blockTimestampLast; // uses single storage slot, accessible via getReserves

    uint public price0CumulativeLast;
    uint public price1CumulativeLast;
    uint public kLast; // reserve0 * reserve1, as of immediately after the most recent liquidity event

    uint public totalFee; // total fee (parts per thousand) charged for a swap
    uint public alpha; // numerator for the protocol fee factor
    uint public beta; // denominator for the protocol fee factor

    uint private unlocked = 1;
    modifier lock() {
        require(unlocked == 1, 'UniswapV2: LOCKED');
        unlocked = 0;
        _;
        unlocked = 1;
    }

    function getReserves() public view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast) {
        _reserve0 = reserve0;
        _reserve1 = reserve1;
        _blockTimestampLast = blockTimestampLast;
    }

    function _safeTransfer(address token, address to, uint value) private {
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(SELECTOR, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), 'UniswapV2: TRANSFER_FAILED');
    }

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
    event FeeUpdated(uint totalFee, uint alpha, uint beta);

    constructor() public {
        factory = msg.sender;
    }

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1, uint _totalFee, uint _alpha, uint _beta) external {
        require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check
        require(_alpha > 0,"_alpha must be greater than 0");
        require(_beta > _alpha,"beta should always be later than alpha");
        require(_totalFee > 0,"totalFee should not be 0, which will allow free flash swap");
        token0 = _token0;
        token1 = _token1;
        totalFee = _totalFee;
        alpha = _alpha;
        beta = _beta;
    }

    function updateFee(uint _totalFee, uint _alpha, uint _beta) external {
        require(msg.sender == factory, 'UniswapV2: FORBIDDEN');
        totalFee = _totalFee;
        alpha = _alpha;
        beta = _beta;

        emit FeeUpdated(_totalFee, _alpha, _beta);
    }

    // update reserves and, on the first call per block, price accumulators
    function _update(uint balance0, uint balance1, uint112 _reserve0, uint112 _reserve1) private {
        require(balance0 <= uint112(-1) && balance1 <= uint112(-1), 'UniswapV2: OVERFLOW');
        uint32 blockTimestamp = uint32(block.timestamp % 2**32);
        uint32 timeElapsed = blockTimestamp - blockTimestampLast; // overflow is desired
        if (timeElapsed > 0 && _reserve0 != 0 && _reserve1 != 0) {
            // * never overflows, and + overflow is desired
            price0CumulativeLast += uint(UQ112x112.encode(_reserve1).uqdiv(_reserve0)) * timeElapsed;
            price1CumulativeLast += uint(UQ112x112.encode(_reserve0).uqdiv(_reserve1)) * timeElapsed;
        }
        reserve0 = uint112(balance0);
        reserve1 = uint112(balance1);
        blockTimestampLast = blockTimestamp;
        emit Sync(reserve0, reserve1);
    }

    // if fee is on, mint liquidity equivalent to alpha/beta of the growth in sqrt(k)
    function _mintFee(uint112 _reserve0, uint112 _reserve1) private returns (bool feeOn) {
        address feeTo = IUniswapV2Factory(factory).feeTo();
        feeOn = feeTo != address(0);
        uint _kLast = kLast; // gas savings
        if (feeOn) {
            if (_kLast != 0) {
                uint rootK = Math.sqrt(uint(_reserve0).mul(_reserve1));
                uint rootKLast = Math.sqrt(_kLast);
                if (rootK > rootKLast) {
                    uint numerator = totalSupply.mul(rootK.sub(rootKLast)).mul(alpha);
                    uint denominator = rootK.mul(beta.sub(alpha)).add(rootKLast.mul(alpha));
                    uint liquidity = numerator / denominator;
                    if (liquidity > 0) _mint(feeTo, liquidity);
                }
            }
        } else if (_kLast != 0) {
            kLast = 0;
        }
    }

    // this low-level function should be called from a contract which performs important safety checks
    function mint(address to) external lock returns (uint liquidity) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        uint balance0 = IERC20Uniswap(token0).balanceOf(address(this));
        uint balance1 = IERC20Uniswap(token1).balanceOf(address(this));
        uint amount0 = balance0.sub(_reserve0);
        uint amount1 = balance1.sub(_reserve1);

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        if (_totalSupply == 0) {
            address migrator = IUniswapV2Factory(factory).migrator();
            if (msg.sender == migrator) {
                liquidity = IMigrator(migrator).desiredLiquidity();
                require(liquidity > 0 && liquidity != uint256(-1), "Bad desired liquidity");
            } else {
                require(migrator == address(0), "Must not have migrator");
                liquidity = Math.sqrt(amount0.mul(amount1)).sub(MINIMUM_LIQUIDITY);
                _mint(address(0), MINIMUM_LIQUIDITY); // permanently lock the first MINIMUM_LIQUIDITY tokens
            }
        } else {
            liquidity = Math.min(amount0.mul(_totalSupply) / _reserve0, amount1.mul(_totalSupply) / _reserve1);
        }
        require(liquidity > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_MINTED');
        _mint(to, liquidity);

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Mint(msg.sender, amount0, amount1);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function burn(address to) external lock returns (uint amount0, uint amount1) {
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        address _token0 = token0;                                // gas savings
        address _token1 = token1;                                // gas savings
        uint balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        uint balance1 = IERC20Uniswap(_token1).balanceOf(address(this));
        uint liquidity = balanceOf[address(this)];

        bool feeOn = _mintFee(_reserve0, _reserve1);
        uint _totalSupply = totalSupply; // gas savings, must be defined here since totalSupply can update in _mintFee
        amount0 = liquidity.mul(balance0) / _totalSupply; // using balances ensures pro-rata distribution
        amount1 = liquidity.mul(balance1) / _totalSupply; // using balances ensures pro-rata distribution
        require(amount0 > 0 && amount1 > 0, 'UniswapV2: INSUFFICIENT_LIQUIDITY_BURNED');
        _burn(address(this), liquidity);
        _safeTransfer(_token0, to, amount0);
        _safeTransfer(_token1, to, amount1);
        balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        balance1 = IERC20Uniswap(_token1).balanceOf(address(this));

        _update(balance0, balance1, _reserve0, _reserve1);
        if (feeOn) kLast = uint(reserve0).mul(reserve1); // reserve0 and reserve1 are up-to-date
        emit Burn(msg.sender, amount0, amount1, to);
    }

    // this low-level function should be called from a contract which performs important safety checks
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external lock {
        require(amount0Out > 0 || amount1Out > 0, 'UniswapV2: INSUFFICIENT_OUTPUT_AMOUNT');
        (uint112 _reserve0, uint112 _reserve1,) = getReserves(); // gas savings
        require(amount0Out < _reserve0 && amount1Out < _reserve1, 'UniswapV2: INSUFFICIENT_LIQUIDITY');

        uint balance0;
        uint balance1;
        { // scope for _token{0,1}, avoids stack too deep errors
        address _token0 = token0;
        address _token1 = token1;
        require(to != _token0 && to != _token1, 'UniswapV2: INVALID_TO');
        if (amount0Out > 0) _safeTransfer(_token0, to, amount0Out); // optimistically transfer tokens
        if (amount1Out > 0) _safeTransfer(_token1, to, amount1Out); // optimistically transfer tokens
        if (data.length > 0) IUniswapV2Callee(to).uniswapV2Call(msg.sender, amount0Out, amount1Out, data);
        balance0 = IERC20Uniswap(_token0).balanceOf(address(this));
        balance1 = IERC20Uniswap(_token1).balanceOf(address(this));
        }
        uint amount0In = balance0 > _reserve0 - amount0Out ? balance0 - (_reserve0 - amount0Out) : 0;
        uint amount1In = balance1 > _reserve1 - amount1Out ? balance1 - (_reserve1 - amount1Out) : 0;
        require(amount0In > 0 || amount1In > 0, 'UniswapV2: INSUFFICIENT_INPUT_AMOUNT');
        { // scope for reserve{0,1}Adjusted, avoids stack too deep errors
        uint balance0Adjusted = balance0.mul(1000).sub(amount0In.mul(totalFee));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(totalFee));
        require(balance0Adjusted.mul(balance1Adjusted) >= uint(_reserve0).mul(_reserve1).mul(1000**2), 'UniswapV2: K');
        }

        _update(balance0, balance1, _reserve0, _reserve1);
        emit Swap(msg.sender, amount0In, amount1In, amount0Out, amount1Out, to);
    }

    // force balances to match reserves
    function skim(address to) external lock {
        address _token0 = token0; // gas savings
        address _token1 = token1; // gas savings
        _safeTransfer(_token0, to, IERC20Uniswap(_token0).balanceOf(address(this)).sub(reserve0));
        _safeTransfer(_token1, to, IERC20Uniswap(_token1).balanceOf(address(this)).sub(reserve1));
    }

    // force reserves to match balances
    function sync() external lock {
        _update(IERC20Uniswap(token0).balanceOf(address(this)), IERC20Uniswap(token1).balanceOf(address(this)), reserve0, reserve1);
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"totalFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"alpha","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"beta","type":"uint256"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount0In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1In","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount0Out","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount1Out","type":"uint256"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"Swap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint112","name":"reserve0","type":"uint112"},{"indexed":false,"internalType":"uint112","name":"reserve1","type":"uint112"}],"name":"Sync","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_LIQUIDITY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"alpha","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beta","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"burn","outputs":[{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"factory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getReserves","outputs":[{"internalType":"uint112","name":"_reserve0","type":"uint112"},{"internalType":"uint112","name":"_reserve1","type":"uint112"},{"internalType":"uint32","name":"_blockTimestampLast","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token0","type":"address"},{"internalType":"address","name":"_token1","type":"address"},{"internalType":"uint256","name":"_totalFee","type":"uint256"},{"internalType":"uint256","name":"_alpha","type":"uint256"},{"internalType":"uint256","name":"_beta","type":"uint256"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"kLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price0CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price1CumulativeLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"}],"name":"skim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount0Out","type":"uint256"},{"internalType":"uint256","name":"amount1Out","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_totalFee","type":"uint256"},{"internalType":"uint256","name":"_alpha","type":"uint256"},{"internalType":"uint256","name":"_beta","type":"uint256"}],"name":"updateFee","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001600f5534801561001557600080fd5b50604080518082018252601281527129b434b130a9bbb0b8102628102a37b5b2b760711b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f02ec6135c0effd6344c1d59f3fe7c85b41f59a70843703824e29619d57cdf3e0818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b0319163317905561264d806101106000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80637464fc3d1161010f578063c45a0155116100a2578063db1d0fd511610071578063db1d0fd5146105ed578063dd62ed3e146105f5578063fc061a4f14610623578063fff6cae91461064c576101e5565b8063c45a01551461054a578063d13f90b414610552578063d21220a714610594578063d505accf1461059c576101e5565b80639faa3c91116100de5780639faa3c91146104e8578063a9059cbb146104f0578063ba9a7a561461051c578063bc25cf7714610524576101e5565b80637464fc3d146104735780637ecebe001461047b57806389afcb44146104a157806395d89b41146104e0576101e5565b806323b872dd116101875780635909c0d5116101565780635909c0d5146104175780635a3d54931461041f5780636a6278421461042757806370a082311461044d576101e5565b806323b872dd146103b357806330adf81f146103e9578063313ce567146103f15780633644e5151461040f576101e5565b8063095ea7b3116101c3578063095ea7b31461032d5780630dfe16811461036d57806318160ddd146103915780631df4ccfc146103ab576101e5565b8063022c0d9f146101ea57806306fdde03146102785780630902f1ac146102f5575b600080fd5b6102766004803603608081101561020057600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561023757600080fd5b82018360208201111561024957600080fd5b8035906020019184600183028401116401000000008311171561026b57600080fd5b509092509050610654565b005b610280610b70565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ba5781810151838201526020016102a2565b50505050905090810190601f1680156102e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102fd610b9e565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103596004803603604081101561034357600080fd5b506001600160a01b038135169060200135610bc8565b604080519115158252519081900360200190f35b610375610bdf565b604080516001600160a01b039092168252519081900360200190f35b610399610bee565b60408051918252519081900360200190f35b610399610bf4565b610359600480360360608110156103c957600080fd5b506001600160a01b03813581169160208101359091169060400135610bfa565b610399610c8e565b6103f9610cb2565b6040805160ff9092168252519081900360200190f35b610399610cb7565b610399610cbd565b610399610cc3565b6103996004803603602081101561043d57600080fd5b50356001600160a01b0316610cc9565b6103996004803603602081101561046357600080fd5b50356001600160a01b0316611145565b610399611157565b6103996004803603602081101561049157600080fd5b50356001600160a01b031661115d565b6104c7600480360360208110156104b757600080fd5b50356001600160a01b031661116f565b6040805192835260208301919091528051918290030190f35b610280611503565b610399611523565b6103596004803603604081101561050657600080fd5b506001600160a01b038135169060200135611529565b610399611536565b6102766004803603602081101561053a57600080fd5b50356001600160a01b031661153c565b6103756116ae565b610276600480360360a081101561056857600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356116bd565b610375611823565b610276600480360360e08110156105b257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611832565b610399611a34565b6103996004803603604081101561060b57600080fd5b506001600160a01b0381358116916020013516611a3a565b6102766004803603606081101561063957600080fd5b5080359060208101359060400135611a57565b610276611b01565b600f5460011461069f576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55841515806106b25750600084115b6106ed5760405162461bcd60e51b81526004018080602001828103825260258152602001806124fe6025913960400191505060405180910390fd5b6000806106f8610b9e565b5091509150816001600160701b03168710801561071d5750806001600160701b031686105b6107585760405162461bcd60e51b81526004018080602001828103825260218152602001806125476021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107965750806001600160a01b0316896001600160a01b031614155b6107df576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a156107f0576107f0828a8d611c63565b891561080157610801818a8c611c63565b86156108b357886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561089a57600080fd5b505af11580156108ae573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156108f957600080fd5b505afa15801561090d573d6000803e3d6000fd5b505050506040513d602081101561092357600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561096f57600080fd5b505afa158015610983573d6000803e3d6000fd5b505050506040513d602081101561099957600080fd5b5051925060009150506001600160701b0385168a900383116109bc5760006109cb565b89856001600160701b03160383035b9050600089856001600160701b03160383116109e85760006109f7565b89856001600160701b03160383035b90506000821180610a085750600081115b610a435760405162461bcd60e51b81526004018080602001828103825260248152602001806125236024913960400191505060405180910390fd5b6000610a6f610a5d600c5485611dfd90919063ffffffff16565b610a69876103e8611dfd565b90611e60565b90506000610a8b610a5d600c5485611dfd90919063ffffffff16565b9050610ab0620f4240610aaa6001600160701b038b8116908b16611dfd565b90611dfd565b610aba8383611dfd565b1015610afc576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610b0a84848888611eb0565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600f55505050505050505050565b6040518060400160405280601281526020017129b434b130a9bbb0b8102628102a37b5b2b760711b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610bd533848461206f565b5060015b92915050565b6006546001600160a01b031681565b60005481565b600c5481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c79576001600160a01b0384166000908152600260209081526040808320338452909152902054610c549083611e60565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c848484846120d1565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60095481565b600a5481565b6000600f54600114610d16576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f81905580610d26610b9e565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d7a57600080fd5b505afa158015610d8e573d6000803e3d6000fd5b505050506040513d6020811015610da457600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610df757600080fd5b505afa158015610e0b573d6000803e3d6000fd5b505050506040513d6020811015610e2157600080fd5b505190506000610e3a836001600160701b038716611e60565b90506000610e51836001600160701b038716611e60565b90506000610e5f878761217f565b600054909150806110365760055460408051637cd07e4760e01b815290516000926001600160a01b031691637cd07e47916004808301926020929190829003018186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d6020811015610ed957600080fd5b50519050336001600160a01b0382161415610fb457806001600160a01b03166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2757600080fd5b505afa158015610f3b573d6000803e3d6000fd5b505050506040513d6020811015610f5157600080fd5b505199508915801590610f6657506000198a14155b610faf576040805162461bcd60e51b81526020600482015260156024820152744261642064657369726564206c697175696469747960581b604482015290519081900360640190fd5b611030565b6001600160a01b03811615611009576040805162461bcd60e51b815260206004820152601660248201527526bab9ba103737ba103430bb329036b4b3b930ba37b960511b604482015290519081900360640190fd5b6110216103e8610a6961101c8888611dfd565b6122f1565b995061103060006103e8612343565b50611079565b6110766001600160701b03891661104d8684611dfd565b8161105457fe5b046001600160701b0389166110698685611dfd565b8161107057fe5b046123cd565b98505b600089116110b85760405162461bcd60e51b81526004018080602001828103825260288152602001806125ca6028913960400191505060405180910390fd5b6110c28a8a612343565b6110ce86868a8a611eb0565b81156110f8576008546110f4906001600160701b0380821691600160701b900416611dfd565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600f5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600f546001146111bd576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f819055806111cd610b9e565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561122957600080fd5b505afa15801561123d573d6000803e3d6000fd5b505050506040513d602081101561125357600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156112a157600080fd5b505afa1580156112b5573d6000803e3d6000fd5b505050506040513d60208110156112cb57600080fd5b5051306000908152600160205260408120549192506112ea888861217f565b600054909150806112fb8487611dfd565b8161130257fe5b049a50806113108486611dfd565b8161131757fe5b04995060008b11801561132a575060008a115b6113655760405162461bcd60e51b81526004018080602001828103825260288152602001806125a26028913960400191505060405180910390fd5b61136f30846123e5565b61137a878d8d611c63565b611385868d8c611c63565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d60208110156113f557600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561144157600080fd5b505afa158015611455573d6000803e3d6000fd5b505050506040513d602081101561146b57600080fd5b5051935061147b85858b8b611eb0565b81156114a5576008546114a1906001600160701b0380821691600160701b900416611dfd565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600f81905550915091565b60405180604001604052806004815260200163053534c560e41b81525081565b600e5481565b6000610bd53384846120d1565b6103e881565b600f54600114611587576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611630928592879261162b926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156115f957600080fd5b505afa15801561160d573d6000803e3d6000fd5b505050506040513d602081101561162357600080fd5b505190611e60565b611c63565b6116a4818461162b6008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115f957600080fd5b50506001600f5550565b6005546001600160a01b031681565b6005546001600160a01b03163314611713576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b60008211611768576040805162461bcd60e51b815260206004820152601d60248201527f5f616c706861206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b8181116117a65760405162461bcd60e51b81526004018080602001828103825260268152602001806125f26026913960400191505060405180910390fd5b600083116117e55760405162461bcd60e51b815260040180806020018281038252603a815260200180612568603a913960400191505060405180910390fd5b600680546001600160a01b039687166001600160a01b0319918216179091556007805495909616941693909317909355600c55600d91909155600e55565b6007546001600160a01b031681565b4284101561187c576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611997573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906119cd5750886001600160a01b0316816001600160a01b0316145b611a1e576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611a2989898961206f565b505050505050505050565b600d5481565b600260209081526000928352604080842090915290825290205481565b6005546001600160a01b03163314611aad576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600c839055600d829055600e819055604080518481526020810184905280820183905290517f509d432c4ab40e3eb039ee95fea93be8de6c751efa87aed5e51c7202b0dd8e099181900360600190a1505050565b600f54600114611b4c576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55600654604080516370a0823160e01b81523060048201529051611c5c926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611b9d57600080fd5b505afa158015611bb1573d6000803e3d6000fd5b505050506040513d6020811015611bc757600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611c1457600080fd5b505afa158015611c28573d6000803e3d6000fd5b505050506040513d6020811015611c3e57600080fd5b50516008546001600160701b0380821691600160701b900416611eb0565b6001600f55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611d105780518252601f199092019160209182019101611cf1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d72576040519150601f19603f3d011682016040523d82523d6000602084013e611d77565b606091505b5091509150818015611da5575080511580611da55750808060200190516020811015611da257600080fd5b50515b611df6576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611e1857505080820282828281611e1557fe5b04145b610bd9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610bd9576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611ece57506001600160701b038311155b611f15576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611f4557506001600160701b03841615155b8015611f5957506001600160701b03831615155b15611fc4578063ffffffff16611f8185611f7286612477565b6001600160e01b031690612489565b600980546001600160e01b03929092169290920201905563ffffffff8116611fac84611f7287612477565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166000908152600160205260409020546120f49082611e60565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461212390826124ae565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d057600080fd5b505afa1580156121e4573d6000803e3d6000fd5b505050506040513d60208110156121fa57600080fd5b5051600b546001600160a01b0382161580159450919250906122dd5780156122d857600061223761101c6001600160701b03888116908816611dfd565b90506000612244836122f1565b9050808211156122d557600d5460009061226e90610aaa6122658686611e60565b60005490611dfd565b905060006122b161228a600d5485611dfd90919063ffffffff16565b6122ab6122a4600d54600e54611e6090919063ffffffff16565b8790611dfd565b906124ae565b905060008183816122be57fe5b04905080156122d1576122d18782612343565b5050505b50505b6122e9565b80156122e9576000600b555b505092915050565b60006003821115612334575080600160028204015b8181101561232e5780915060028182858161231d57fe5b04018161232657fe5b049050612306565b5061233e565b811561233e575060015b919050565b60005461235090826124ae565b60009081556001600160a01b03831681526001602052604090205461237590826124ae565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106123dc57816123de565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546124089082611e60565b6001600160a01b0383166000908152600160205260408120919091555461242f9082611e60565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b038416816124a657fe5b049392505050565b80820182811015610bd9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459746f74616c4665652073686f756c64206e6f7420626520302c2077686963682077696c6c20616c6c6f77206672656520666c6173682073776170556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544626574612073686f756c6420616c77617973206265206c61746572207468616e20616c706861a264697066735822122034fc8e76ffcc0041f72ed96a55b813cb8ce57dfd6be9adb80d191ef52cf8c2b564736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80637464fc3d1161010f578063c45a0155116100a2578063db1d0fd511610071578063db1d0fd5146105ed578063dd62ed3e146105f5578063fc061a4f14610623578063fff6cae91461064c576101e5565b8063c45a01551461054a578063d13f90b414610552578063d21220a714610594578063d505accf1461059c576101e5565b80639faa3c91116100de5780639faa3c91146104e8578063a9059cbb146104f0578063ba9a7a561461051c578063bc25cf7714610524576101e5565b80637464fc3d146104735780637ecebe001461047b57806389afcb44146104a157806395d89b41146104e0576101e5565b806323b872dd116101875780635909c0d5116101565780635909c0d5146104175780635a3d54931461041f5780636a6278421461042757806370a082311461044d576101e5565b806323b872dd146103b357806330adf81f146103e9578063313ce567146103f15780633644e5151461040f576101e5565b8063095ea7b3116101c3578063095ea7b31461032d5780630dfe16811461036d57806318160ddd146103915780631df4ccfc146103ab576101e5565b8063022c0d9f146101ea57806306fdde03146102785780630902f1ac146102f5575b600080fd5b6102766004803603608081101561020057600080fd5b8135916020810135916001600160a01b03604083013516919081019060808101606082013564010000000081111561023757600080fd5b82018360208201111561024957600080fd5b8035906020019184600183028401116401000000008311171561026b57600080fd5b509092509050610654565b005b610280610b70565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102ba5781810151838201526020016102a2565b50505050905090810190601f1680156102e75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102fd610b9e565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b6103596004803603604081101561034357600080fd5b506001600160a01b038135169060200135610bc8565b604080519115158252519081900360200190f35b610375610bdf565b604080516001600160a01b039092168252519081900360200190f35b610399610bee565b60408051918252519081900360200190f35b610399610bf4565b610359600480360360608110156103c957600080fd5b506001600160a01b03813581169160208101359091169060400135610bfa565b610399610c8e565b6103f9610cb2565b6040805160ff9092168252519081900360200190f35b610399610cb7565b610399610cbd565b610399610cc3565b6103996004803603602081101561043d57600080fd5b50356001600160a01b0316610cc9565b6103996004803603602081101561046357600080fd5b50356001600160a01b0316611145565b610399611157565b6103996004803603602081101561049157600080fd5b50356001600160a01b031661115d565b6104c7600480360360208110156104b757600080fd5b50356001600160a01b031661116f565b6040805192835260208301919091528051918290030190f35b610280611503565b610399611523565b6103596004803603604081101561050657600080fd5b506001600160a01b038135169060200135611529565b610399611536565b6102766004803603602081101561053a57600080fd5b50356001600160a01b031661153c565b6103756116ae565b610276600480360360a081101561056857600080fd5b506001600160a01b038135811691602081013590911690604081013590606081013590608001356116bd565b610375611823565b610276600480360360e08110156105b257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611832565b610399611a34565b6103996004803603604081101561060b57600080fd5b506001600160a01b0381358116916020013516611a3a565b6102766004803603606081101561063957600080fd5b5080359060208101359060400135611a57565b610276611b01565b600f5460011461069f576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55841515806106b25750600084115b6106ed5760405162461bcd60e51b81526004018080602001828103825260258152602001806124fe6025913960400191505060405180910390fd5b6000806106f8610b9e565b5091509150816001600160701b03168710801561071d5750806001600160701b031686105b6107585760405162461bcd60e51b81526004018080602001828103825260218152602001806125476021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107965750806001600160a01b0316896001600160a01b031614155b6107df576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a156107f0576107f0828a8d611c63565b891561080157610801818a8c611c63565b86156108b357886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561089a57600080fd5b505af11580156108ae573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b1580156108f957600080fd5b505afa15801561090d573d6000803e3d6000fd5b505050506040513d602081101561092357600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561096f57600080fd5b505afa158015610983573d6000803e3d6000fd5b505050506040513d602081101561099957600080fd5b5051925060009150506001600160701b0385168a900383116109bc5760006109cb565b89856001600160701b03160383035b9050600089856001600160701b03160383116109e85760006109f7565b89856001600160701b03160383035b90506000821180610a085750600081115b610a435760405162461bcd60e51b81526004018080602001828103825260248152602001806125236024913960400191505060405180910390fd5b6000610a6f610a5d600c5485611dfd90919063ffffffff16565b610a69876103e8611dfd565b90611e60565b90506000610a8b610a5d600c5485611dfd90919063ffffffff16565b9050610ab0620f4240610aaa6001600160701b038b8116908b16611dfd565b90611dfd565b610aba8383611dfd565b1015610afc576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610b0a84848888611eb0565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600f55505050505050505050565b6040518060400160405280601281526020017129b434b130a9bbb0b8102628102a37b5b2b760711b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610bd533848461206f565b5060015b92915050565b6006546001600160a01b031681565b60005481565b600c5481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610c79576001600160a01b0384166000908152600260209081526040808320338452909152902054610c549083611e60565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610c848484846120d1565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60095481565b600a5481565b6000600f54600114610d16576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f81905580610d26610b9e565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d7a57600080fd5b505afa158015610d8e573d6000803e3d6000fd5b505050506040513d6020811015610da457600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610df757600080fd5b505afa158015610e0b573d6000803e3d6000fd5b505050506040513d6020811015610e2157600080fd5b505190506000610e3a836001600160701b038716611e60565b90506000610e51836001600160701b038716611e60565b90506000610e5f878761217f565b600054909150806110365760055460408051637cd07e4760e01b815290516000926001600160a01b031691637cd07e47916004808301926020929190829003018186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d6020811015610ed957600080fd5b50519050336001600160a01b0382161415610fb457806001600160a01b03166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2757600080fd5b505afa158015610f3b573d6000803e3d6000fd5b505050506040513d6020811015610f5157600080fd5b505199508915801590610f6657506000198a14155b610faf576040805162461bcd60e51b81526020600482015260156024820152744261642064657369726564206c697175696469747960581b604482015290519081900360640190fd5b611030565b6001600160a01b03811615611009576040805162461bcd60e51b815260206004820152601660248201527526bab9ba103737ba103430bb329036b4b3b930ba37b960511b604482015290519081900360640190fd5b6110216103e8610a6961101c8888611dfd565b6122f1565b995061103060006103e8612343565b50611079565b6110766001600160701b03891661104d8684611dfd565b8161105457fe5b046001600160701b0389166110698685611dfd565b8161107057fe5b046123cd565b98505b600089116110b85760405162461bcd60e51b81526004018080602001828103825260288152602001806125ca6028913960400191505060405180910390fd5b6110c28a8a612343565b6110ce86868a8a611eb0565b81156110f8576008546110f4906001600160701b0380821691600160701b900416611dfd565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600f5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600f546001146111bd576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f819055806111cd610b9e565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b15801561122957600080fd5b505afa15801561123d573d6000803e3d6000fd5b505050506040513d602081101561125357600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b1580156112a157600080fd5b505afa1580156112b5573d6000803e3d6000fd5b505050506040513d60208110156112cb57600080fd5b5051306000908152600160205260408120549192506112ea888861217f565b600054909150806112fb8487611dfd565b8161130257fe5b049a50806113108486611dfd565b8161131757fe5b04995060008b11801561132a575060008a115b6113655760405162461bcd60e51b81526004018080602001828103825260288152602001806125a26028913960400191505060405180910390fd5b61136f30846123e5565b61137a878d8d611c63565b611385868d8c611c63565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b1580156113cb57600080fd5b505afa1580156113df573d6000803e3d6000fd5b505050506040513d60208110156113f557600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561144157600080fd5b505afa158015611455573d6000803e3d6000fd5b505050506040513d602081101561146b57600080fd5b5051935061147b85858b8b611eb0565b81156114a5576008546114a1906001600160701b0380821691600160701b900416611dfd565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600f81905550915091565b60405180604001604052806004815260200163053534c560e41b81525081565b600e5481565b6000610bd53384846120d1565b6103e881565b600f54600114611587576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b039485169490931692611630928592879261162b926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156115f957600080fd5b505afa15801561160d573d6000803e3d6000fd5b505050506040513d602081101561162357600080fd5b505190611e60565b611c63565b6116a4818461162b6008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115f957600080fd5b50506001600f5550565b6005546001600160a01b031681565b6005546001600160a01b03163314611713576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b60008211611768576040805162461bcd60e51b815260206004820152601d60248201527f5f616c706861206d7573742062652067726561746572207468616e2030000000604482015290519081900360640190fd5b8181116117a65760405162461bcd60e51b81526004018080602001828103825260268152602001806125f26026913960400191505060405180910390fd5b600083116117e55760405162461bcd60e51b815260040180806020018281038252603a815260200180612568603a913960400191505060405180910390fd5b600680546001600160a01b039687166001600160a01b0319918216179091556007805495909616941693909317909355600c55600d91909155600e55565b6007546001600160a01b031681565b4284101561187c576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611997573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906119cd5750886001600160a01b0316816001600160a01b0316145b611a1e576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611a2989898961206f565b505050505050505050565b600d5481565b600260209081526000928352604080842090915290825290205481565b6005546001600160a01b03163314611aad576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600c839055600d829055600e819055604080518481526020810184905280820183905290517f509d432c4ab40e3eb039ee95fea93be8de6c751efa87aed5e51c7202b0dd8e099181900360600190a1505050565b600f54600114611b4c576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600f55600654604080516370a0823160e01b81523060048201529051611c5c926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611b9d57600080fd5b505afa158015611bb1573d6000803e3d6000fd5b505050506040513d6020811015611bc757600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611c1457600080fd5b505afa158015611c28573d6000803e3d6000fd5b505050506040513d6020811015611c3e57600080fd5b50516008546001600160701b0380821691600160701b900416611eb0565b6001600f55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611d105780518252601f199092019160209182019101611cf1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611d72576040519150601f19603f3d011682016040523d82523d6000602084013e611d77565b606091505b5091509150818015611da5575080511580611da55750808060200190516020811015611da257600080fd5b50515b611df6576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611e1857505080820282828281611e1557fe5b04145b610bd9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610bd9576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611ece57506001600160701b038311155b611f15576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611f4557506001600160701b03841615155b8015611f5957506001600160701b03831615155b15611fc4578063ffffffff16611f8185611f7286612477565b6001600160e01b031690612489565b600980546001600160e01b03929092169290920201905563ffffffff8116611fac84611f7287612477565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b0383166000908152600160205260409020546120f49082611e60565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461212390826124ae565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b1580156121d057600080fd5b505afa1580156121e4573d6000803e3d6000fd5b505050506040513d60208110156121fa57600080fd5b5051600b546001600160a01b0382161580159450919250906122dd5780156122d857600061223761101c6001600160701b03888116908816611dfd565b90506000612244836122f1565b9050808211156122d557600d5460009061226e90610aaa6122658686611e60565b60005490611dfd565b905060006122b161228a600d5485611dfd90919063ffffffff16565b6122ab6122a4600d54600e54611e6090919063ffffffff16565b8790611dfd565b906124ae565b905060008183816122be57fe5b04905080156122d1576122d18782612343565b5050505b50505b6122e9565b80156122e9576000600b555b505092915050565b60006003821115612334575080600160028204015b8181101561232e5780915060028182858161231d57fe5b04018161232657fe5b049050612306565b5061233e565b811561233e575060015b919050565b60005461235090826124ae565b60009081556001600160a01b03831681526001602052604090205461237590826124ae565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106123dc57816123de565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546124089082611e60565b6001600160a01b0383166000908152600160205260408120919091555461242f9082611e60565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b038416816124a657fe5b049392505050565b80820182811015610bd9576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459746f74616c4665652073686f756c64206e6f7420626520302c2077686963682077696c6c20616c6c6f77206672656520666c6173682073776170556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544626574612073686f756c6420616c77617973206265206c61746572207468616e20616c706861a264697066735822122034fc8e76ffcc0041f72ed96a55b813cb8ce57dfd6be9adb80d191ef52cf8c2b564736f6c634300060c0033

Deployed Bytecode Sourcemap

8191:11124:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16777:1917;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16777:1917:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16777:1917:0;;-1:-1:-1;16777:1917:0;-1:-1:-1;16777:1917:0;:::i;:::-;;803:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9416:231;;;:::i;:::-;;;;-1:-1:-1;;;;;9416:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2858:147;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2858:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8492:21;;;:::i;:::-;;;;-1:-1:-1;;;;;8492:21:0;;;;;;;;;;;;;;947:24;;;:::i;:::-;;;;;;;;;;;;;;;;9027:20;;;:::i;3160:301::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3160:301:0;;;;;;;;;;;;;;;;;:::i;1239:108::-;;;:::i;905:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1096:31;;;:::i;8843:32::-;;;:::i;8882:::-;;;:::i;13406:1653::-;;;;;;;;;;;;;;;;-1:-1:-1;13406:1653:0;-1:-1:-1;;;;;13406:1653:0;;:::i;978:41::-;;;;;;;;;;;;;;;;-1:-1:-1;978:41:0;-1:-1:-1;;;;;978:41:0;;:::i;8921:17::-;;;:::i;1354:38::-;;;;;;;;;;;;;;;;-1:-1:-1;1354:38:0;-1:-1:-1;;;;;1354:38:0;;:::i;15171:1494::-;;;;;;;;;;;;;;;;-1:-1:-1;15171:1494:0;-1:-1:-1;;;;;15171:1494:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;860:38;;;:::i;9172:16::-;;;:::i;3013:139::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3013:139:0;;;;;;;;:::i;8313:46::-;;;:::i;18743:348::-;;;;;;;;;;;;;;;;-1:-1:-1;18743:348:0;-1:-1:-1;;;;;18743:348:0;;:::i;8463:22::-;;;:::i;10537:561::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10537:561:0;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8520:21::-;;;:::i;3469:674::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3469:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;9107:17::-;;;:::i;1026:61::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1026:61:0;;;;;;;;;;:::i;11106:275::-;;;;;;;;;;;;;;;;-1:-1:-1;11106:275:0;;;;;;;;;;;;:::i;19140:172::-;;;:::i;16777:1917::-;9307:8;;9319:1;9307:13;9299:43;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;;;;9364:1;9353:8;:12;16891:14;;;;:32:::1;;;16922:1;16909:10;:14;16891:32;16883:82;;;;-1:-1:-1::0;;;16883:82:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16977:17;16996::::0;17018:13:::1;:11;:13::i;:::-;16976:55;;;;;17078:9;-1:-1:-1::0;;;;;17065:22:0::1;:10;:22;:48;;;;;17104:9;-1:-1:-1::0;;;;;17091:22:0::1;:10;:22;17065:48;17057:94;;;;-1:-1:-1::0;;;17057:94:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17296:6;::::0;17331::::1;::::0;17164:13:::1;::::0;;;-1:-1:-1;;;;;17296:6:0;;::::1;::::0;17331;;::::1;::::0;17356:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;17379:7;-1:-1:-1::0;;;;;17373:13:0::1;:2;-1:-1:-1::0;;;;;17373:13:0::1;;;17356:30;17348:64;;;::::0;;-1:-1:-1;;;17348:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;17348:64:0;;;;;;;;;;;;;::::1;;17427:14:::0;;17423:58:::1;;17443:38;17457:7;17466:2;17470:10;17443:13;:38::i;:::-;17530:14:::0;;17526:58:::1;;17546:38;17560:7;17569:2;17573:10;17546:13;:38::i;:::-;17633:15:::0;;17629:97:::1;;17667:2;-1:-1:-1::0;;;;;17650:34:0::1;;17685:10;17697;17709;17721:4;;17650:76;;;;;;;;;;;;;-1:-1:-1::0;;;;;17650:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17629:97;17748:47;::::0;;-1:-1:-1;;;17748:47:0;;17789:4:::1;17748:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;17748:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17748:47:0;17817::::1;::::0;;-1:-1:-1;;;17817:47:0;;17858:4:::1;17817:47;::::0;::::1;::::0;;;17748;;-1:-1:-1;;;;;;17817:32:0;::::1;::::0;::::1;::::0;:47;;;;;17748::::1;::::0;17817;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17817:47:0;;-1:-1:-1;17886:14:0::1;::::0;-1:-1:-1;;;;;;;17914:22:0;::::1;::::0;;::::1;17903:33:::0;::::1;:75;;17977:1;17903:75;;;17963:10;17951:9;-1:-1:-1::0;;;;;17951:22:0::1;;17939:8;:35;17903:75;17886:92;;17989:14;18029:10;18017:9;-1:-1:-1::0;;;;;18017:22:0::1;;18006:8;:33;:75;;18080:1;18006:75;;;18066:10;18054:9;-1:-1:-1::0;;;;;18054:22:0::1;;18042:8;:35;18006:75;17989:92;;18112:1;18100:9;:13;:30;;;;18129:1;18117:9;:13;18100:30;18092:79;;;;-1:-1:-1::0;;;18092:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18257:21;18281:47;18304:23;18318:8;;18304:9;:13;;:23;;;;:::i;:::-;18281:18;:8:::0;18294:4:::1;18281:12;:18::i;:::-;:22:::0;::::1;:47::i;:::-;18257:71;;18339:21;18363:47;18386:23;18400:8;;18386:9;:13;;:23;;;;:::i;18363:47::-;18339:71:::0;-1:-1:-1;18471:43:0::1;18506:7;18471:30;-1:-1:-1::0;;;;;18471:15:0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;18429:38;:16:::0;18450;18429:20:::1;:38::i;:::-;:85;;18421:110;;;::::0;;-1:-1:-1;;;18421:110:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;18421:110:0;;;;;;;;;;;;;::::1;;9376:1;;18555:49;18563:8;18573;18583:9;18594;18555:7;:49::i;:::-;18620:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18620:66:0;::::1;::::0;18625:10:::1;::::0;18620:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;9399:1:0;9388:8;:12;-1:-1:-1;;;;;;;;;16777:1917:0:o;803:50::-;;;;;;;;;;;;;;-1:-1:-1;;;803:50:0;;;;:::o;9416:231::-;9549:8;;-1:-1:-1;;;;;9549:8:0;;;;-1:-1:-1;;;9580:8:0;;;;;;-1:-1:-1;;;9621:18:0;;;;;9416:231::o;2858:147::-;2922:4;2939:36;2948:10;2960:7;2969:5;2939:8;:36::i;:::-;-1:-1:-1;2993:4:0;2858:147;;;;;:::o;8492:21::-;;;-1:-1:-1;;;;;8492:21:0;;:::o;947:24::-;;;;:::o;9027:20::-;;;;:::o;3160:301::-;-1:-1:-1;;;;;3259:15:0;;3238:4;3259:15;;;:9;:15;;;;;;;;3275:10;3259:27;;;;;;;;-1:-1:-1;;3259:39:0;3255:140;;-1:-1:-1;;;;;3345:15:0;;;;;;:9;:15;;;;;;;;3361:10;3345:27;;;;;;;;:38;;3377:5;3345:31;:38::i;:::-;-1:-1:-1;;;;;3315:15:0;;;;;;:9;:15;;;;;;;;3331:10;3315:27;;;;;;;:68;3255:140;3405:26;3415:4;3421:2;3425:5;3405:9;:26::i;:::-;-1:-1:-1;3449:4:0;3160:301;;;;;:::o;1239:108::-;1281:66;1239:108;:::o;905:35::-;938:2;905:35;:::o;1096:31::-;;;;:::o;8843:32::-;;;;:::o;8882:::-;;;;:::o;13406:1653::-;13455:14;9307:8;;9319:1;9307:13;9299:43;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;;;;9364:1;9353:8;:12;;;9364:1;13524:13:::1;:11;:13::i;:::-;-1:-1:-1::0;13593:6:0::1;::::0;13579:46:::1;::::0;;-1:-1:-1;;;13579:46:0;;13619:4:::1;13579:46;::::0;::::1;::::0;;;13482:55;;-1:-1:-1;13482:55:0;;-1:-1:-1;13563:13:0::1;::::0;-1:-1:-1;;;;;13593:6:0;;::::1;::::0;13579:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;13593:6;13579:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13579:46:0;13666:6:::1;::::0;13652:46:::1;::::0;;-1:-1:-1;;;13652:46:0;;13692:4:::1;13652:46;::::0;::::1;::::0;;;13579;;-1:-1:-1;13636:13:0::1;::::0;-1:-1:-1;;;;;13666:6:0;;::::1;::::0;13652:31:::1;::::0;:46;;;;;13579::::1;::::0;13652;;;;;;;;13666:6;13652:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;13652:46:0;;-1:-1:-1;13709:12:0::1;13724:23;:8:::0;-1:-1:-1;;;;;13724:23:0;::::1;:12;:23::i;:::-;13709:38:::0;-1:-1:-1;13758:12:0::1;13773:23;:8:::0;-1:-1:-1;;;;;13773:23:0;::::1;:12;:23::i;:::-;13758:38;;13809:10;13822:30;13831:9;13842;13822:8;:30::i;:::-;13863:17;13883:11:::0;13809:43;;-1:-1:-1;13987:17:0;13983:751:::1;;14058:7;::::0;14040:37:::1;::::0;;-1:-1:-1;;;14040:37:0;;;;14021:16:::1;::::0;-1:-1:-1;;;;;14058:7:0::1;::::0;14040:35:::1;::::0;:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;14058:7;14040:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14040:37:0;;-1:-1:-1;14096:10:0::1;-1:-1:-1::0;;;;;14096:22:0;::::1;;14092:500;;;14161:8;-1:-1:-1::0;;;;;14151:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14151:38:0;;-1:-1:-1;14216:13:0;;;;;:41:::1;;;-1:-1:-1::0;;14233:9:0::1;:24;;14216:41;14208:75;;;::::0;;-1:-1:-1;;;14208:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;14208:75:0;;;;;;;;;;;;;::::1;;14092:500;;;-1:-1:-1::0;;;;;14332:22:0;::::1;::::0;14324:57:::1;;;::::0;;-1:-1:-1;;;14324:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;14324:57:0;;;;;;;;;;;;;::::1;;14412:54;8354:5;14412:31;14422:20;:7:::0;14434;14422:11:::1;:20::i;:::-;14412:9;:31::i;:54::-;14400:66;;14485:36;14499:1;8354:5;14485;:36::i;:::-;13983:751;;;;14636:86;-1:-1:-1::0;;;;;14645:37:0;::::1;:25;:7:::0;14657:12;14645:11:::1;:25::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;14684:37:0;::::1;:25;:7:::0;14696:12;14684:11:::1;:25::i;:::-;:37;;;;;;14636:8;:86::i;:::-;14624:98;;13983:751;14764:1;14752:9;:13;14744:66;;;;-1:-1:-1::0;;;14744:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14821:20;14827:2;14831:9;14821:5;:20::i;:::-;14854:49;14862:8;14872;14882:9;14893;14854:7;:49::i;:::-;14918:5;14914:47;;;14952:8;::::0;14933:28:::1;::::0;-1:-1:-1;;;;;14938:8:0;;::::1;::::0;-1:-1:-1;;;14952:8:0;::::1;;14933:18;:28::i;:::-;14925:5;:36:::0;14914:47:::1;15017:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;15022:10:::1;::::0;15017:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;9399:1:0;9388:8;:12;-1:-1:-1;13406:1653:0;;;-1:-1:-1;;;;;;13406:1653:0:o;978:41::-;;;;;;;;;;;;;:::o;8921:17::-;;;;:::o;1354:38::-;;;;;;;;;;;;;:::o;15171:1494::-;15220:12;15234;9307:8;;9319:1;9307:13;9299:43;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;;;;9364:1;9353:8;:12;;;9364:1;15301:13:::1;:11;:13::i;:::-;-1:-1:-1::0;15358:6:0::1;::::0;15439::::1;::::0;15518:47:::1;::::0;;-1:-1:-1;;;15518:47:0;;15559:4:::1;15518:47;::::0;::::1;::::0;;;15259:55;;-1:-1:-1;15259:55:0;;-1:-1:-1;;;;;;15358:6:0;;::::1;::::0;15439;::::1;::::0;15340:15:::1;::::0;15358:6;;15518:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;15358:6;15518:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15518:47:0;15592::::1;::::0;;-1:-1:-1;;;15592:47:0;;15633:4:::1;15592:47;::::0;::::1;::::0;;;15518;;-1:-1:-1;15576:13:0::1;::::0;-1:-1:-1;;;;;15592:32:0;::::1;::::0;::::1;::::0;:47;;;;;15518::::1;::::0;15592;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;15592:47:0;15685:4:::1;15650:14;15667:24:::0;;;:9:::1;15592:47;15667:24:::0;;;;;15592:47;;-1:-1:-1;15717:30:0::1;15726:9:::0;15737;15717:8:::1;:30::i;:::-;15758:17;15778:11:::0;15704:43;;-1:-1:-1;15778:11:0;15888:23:::1;:9:::0;15902:8;15888:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;16021:12:0;15995:23:::1;:9:::0;16009:8;15995:13:::1;:23::i;:::-;:38;;;;;;15985:48;;16110:1;16100:7;:11;:26;;;;;16125:1;16115:7;:11;16100:26;16092:79;;;;-1:-1:-1::0;;;16092:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16182:31;16196:4;16203:9;16182:5;:31::i;:::-;16224:35;16238:7;16247:2;16251:7;16224:13;:35::i;:::-;16270;16284:7;16293:2;16297:7;16270:13;:35::i;:::-;16327:47;::::0;;-1:-1:-1;;;16327:47:0;;16368:4:::1;16327:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;16327:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16327:47:0;16396::::1;::::0;;-1:-1:-1;;;16396:47:0;;16437:4:::1;16396:47;::::0;::::1;::::0;;;16327;;-1:-1:-1;;;;;;16396:32:0;::::1;::::0;::::1;::::0;:47;;;;;16327::::1;::::0;16396;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16396:47:0;;-1:-1:-1;16456:49:0::1;16464:8:::0;16396:47;16484:9;16495;16456:7:::1;:49::i;:::-;16520:5;16516:47;;;16554:8;::::0;16535:28:::1;::::0;-1:-1:-1;;;;;16540:8:0;;::::1;::::0;-1:-1:-1;;;16554:8:0;::::1;;16535:18;:28::i;:::-;16527:5;:36:::0;16516:47:::1;16619:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;16619:38:0;::::1;::::0;16624:10:::1;::::0;16619:38:::1;::::0;;;;;;;;;::::1;9376:1;;;;;;;;;9399::::0;9388:8;:12;;;;15171:1494;;;:::o;860:38::-;;;;;;;;;;;;;;-1:-1:-1;;;860:38:0;;;;:::o;9172:16::-;;;;:::o;3013:139::-;3073:4;3090:32;3100:10;3112:2;3116:5;3090:9;:32::i;8313:46::-;8354:5;8313:46;:::o;18743:348::-;9307:8;;9319:1;9307:13;9299:43;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;;;;9364:1;9353:8;:12;18812:6:::1;::::0;18862::::1;::::0;18973:8:::1;::::0;18921:47:::1;::::0;;-1:-1:-1;;;18921:47:0;;18962:4:::1;18921:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;18812:6:0;;::::1;::::0;18862;;::::1;::::0;18894:89:::1;::::0;18812:6;;18917:2;;18921:61:::1;::::0;-1:-1:-1;;;;;18973:8:0::1;::::0;18812:6;;18921:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;18812:6;18921:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;18921:47:0;;:51:::1;:61::i;:::-;18894:13;:89::i;:::-;18994;19008:7;19017:2;19021:61;19073:8;;;;;;;;;-1:-1:-1::0;;;;;19073:8:0::1;-1:-1:-1::0;;;;;19021:61:0::1;19035:7;-1:-1:-1::0;;;;;19021:32:0::1;;19062:4;19021:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;19021:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;18994:89;-1:-1:-1::0;;9399:1:0;9388:8;:12;-1:-1:-1;18743:348:0:o;8463:22::-;;;-1:-1:-1;;;;;8463:22:0;;:::o;10537:561::-;10674:7;;-1:-1:-1;;;;;10674:7:0;10660:10;:21;10652:54;;;;;-1:-1:-1;;;10652:54:0;;;;;;;;;;;;-1:-1:-1;;;10652:54:0;;;;;;;;;;;;;;;10754:1;10745:6;:10;10737:51;;;;;-1:-1:-1;;;10737:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10815:6;10807:5;:14;10799:64;;;;-1:-1:-1;;;10799:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10894:1;10882:9;:13;10874:83;;;;-1:-1:-1;;;10874:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10968:6;:16;;-1:-1:-1;;;;;10968:16:0;;;-1:-1:-1;;;;;;10968:16:0;;;;;;;10995:6;:16;;;;;;;;;;;;;;;11022:8;:20;11053:5;:14;;;;11078:4;:12;10537:561::o;8520:21::-;;;-1:-1:-1;;;;;8520:21:0;;:::o;3469:674::-;3615:15;3603:8;:27;;3595:58;;;;;-1:-1:-1;;;3595:58:0;;;;;;;;;;;;-1:-1:-1;;;3595:58:0;;;;;;;;;;;;;;;3769:16;;-1:-1:-1;;;;;3865:13:0;;;3664:14;3865:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3814:77;;1281:66;3814:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3804:88;;;;;;-1:-1:-1;;;3705:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3681:237;;;;;;;;;3956:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3664:14;;3865:15;3956:26;;;;;-1:-1:-1;;3956:26:0;;;;;;;;;;3865:15;3956:26;;;;;;;;;;;;;;;-1:-1:-1;;3956:26:0;;-1:-1:-1;;3956:26:0;;;-1:-1:-1;;;;;;;4001:30:0;;;;;;:59;;;4055:5;-1:-1:-1;;;;;4035:25:0;:16;-1:-1:-1;;;;;4035:25:0;;4001:59;3993:100;;;;;-1:-1:-1;;;3993:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4104:31;4113:5;4120:7;4129:5;4104:8;:31::i;:::-;3469:674;;;;;;;;;:::o;9107:17::-;;;;:::o;1026:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;11106:275::-;11208:7;;-1:-1:-1;;;;;11208:7:0;11194:10;:21;11186:54;;;;;-1:-1:-1;;;11186:54:0;;;;;;;;;;;;-1:-1:-1;;;11186:54:0;;;;;;;;;;;;;;;11251:8;:20;;;11282:5;:14;;;11307:4;:12;;;11337:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11106:275;;;:::o;19140:172::-;9307:8;;9319:1;9307:13;9299:43;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;-1:-1:-1;;;9299:43:0;;;;;;;;;;;;;;;9364:1;9353:8;:12;19203:6:::1;::::0;19189:46:::1;::::0;;-1:-1:-1;;;19189:46:0;;19229:4:::1;19189:46;::::0;::::1;::::0;;;19181:123:::1;::::0;-1:-1:-1;;;;;19203:6:0::1;::::0;19189:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;19203:6;19189:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19189:46:0;19251:6:::1;::::0;19237:46:::1;::::0;;-1:-1:-1;;;19237:46:0;;19277:4:::1;19237:46;::::0;::::1;::::0;;;-1:-1:-1;;;;;19251:6:0;;::::1;::::0;19237:31:::1;::::0;:46;;;;;19189::::1;::::0;19237;;;;;;;;19251:6;19237:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;19237:46:0;19285:8:::1;::::0;-1:-1:-1;;;;;19285:8:0;;::::1;::::0;-1:-1:-1;;;19295:8:0;::::1;;19181:7;:123::i;:::-;9399:1:::0;9388:8;:12;19140:172::o;9655:287::-;8418:34;;;;;;;;;;;;;;;;;9783:43;;-1:-1:-1;;;;;9783:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9783:43:0;-1:-1:-1;;;9783:43:0;;;9772:55;;;;9737:12;;9751:17;;9772:10;;;9783:43;9772:55;;;9783:43;9772:55;;9783:43;9772:55;;;;;;;;;;-1:-1:-1;;9772:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9736:91;;;;9846:7;:57;;;;-1:-1:-1;9858:11:0;;:16;;:44;;;9889:4;9878:24;;;;;;;;;;;;;;;-1:-1:-1;9878:24:0;9858:44;9838:96;;;;;-1:-1:-1;;;9838:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;9655:287;;;;;:::o;499:142::-;551:6;578;;;:30;;-1:-1:-1;;593:5:0;;;607:1;602;593:5;602:1;588:15;;;;;:20;578:30;570:63;;;;;-1:-1:-1;;;570:63:0;;;;;;;;;;;;-1:-1:-1;;;570:63:0;;;;;;;;;;;;;;362:129;446:5;;;441:16;;;;433:50;;;;;-1:-1:-1;;;433:50:0;;;;;;;;;;;;-1:-1:-1;;;433:50:0;;;;;;;;;;;;;;11466:860;-1:-1:-1;;;;;11578:23:0;;;;;:50;;-1:-1:-1;;;;;;11605:23:0;;;11578:50;11570:82;;;;;-1:-1:-1;;;11570:82:0;;;;;;;;;;;;-1:-1:-1;;;11570:82:0;;;;;;;;;;;;;;;11767:18;;11694:23;:15;:23;;;-1:-1:-1;;;11767:18:0;;;;11750:35;;;11823:15;;;;;;:33;;-1:-1:-1;;;;;;11842:14:0;;;;11823:33;:51;;;;-1:-1:-1;;;;;;11860:14:0;;;;11823:51;11819:336;;;12029:11;11976:64;;11981:44;12015:9;11981:27;11998:9;11981:16;:27::i;:::-;-1:-1:-1;;;;;11981:33:0;;;:44::i;:::-;11952:20;:88;;-1:-1:-1;;;;;11976:50:0;;;;:64;;;;11952:88;;;12079:64;;;12084:44;12118:9;12084:27;12101:9;12084:16;:27::i;:44::-;12055:20;:88;;-1:-1:-1;;;;;12079:50:0;;;;:64;;;;12055:88;;;11819:336;12165:8;:28;;-1:-1:-1;;12165:28:0;-1:-1:-1;;;;;12165:28:0;;;;;;;-1:-1:-1;;;;12204:28:0;-1:-1:-1;;;12204:28:0;;;;;;;;;-1:-1:-1;;;;;12243:35:0;-1:-1:-1;;;12243:35:0;;;;;;;;;12294:24;;;12299:8;;;12294:24;;12309:8;;;;;;;12294:24;;;;;;;;;;;;;;;;;11466:860;;;;;;:::o;2453:169::-;-1:-1:-1;;;;;2534:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2583:31;;;;;;;;;;;;;;;;;2453:169;;;:::o;2630:220::-;-1:-1:-1;;;;;2724:15:0;;;;;;:9;:15;;;;;;:26;;2744:5;2724:19;:26::i;:::-;-1:-1:-1;;;;;2706:15:0;;;;;;;:9;:15;;;;;;:44;;;;2777:13;;;;;;;:24;;2795:5;2777:17;:24::i;:::-;-1:-1:-1;;;;;2761:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;2817:25;;;;;;;2761:13;;2817:25;;;;;;;;;;;;;2630:220;;;:::o;12421:873::-;12494:10;12517:13;12551:7;;;;;;;;;-1:-1:-1;;;;;12551:7:0;-1:-1:-1;;;;;12533:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12533:34:0;12630:5;;-1:-1:-1;;;;;12586:19:0;;;;;;-1:-1:-1;12533:34:0;;-1:-1:-1;12630:5:0;12661:626;;12691:11;;12687:530;;12723:10;12736:41;12746:30;-1:-1:-1;;;;;12746:15:0;;;;:30;;:19;:30::i;12736:41::-;12723:54;;12796:14;12813:17;12823:6;12813:9;:17::i;:::-;12796:34;;12861:9;12853:5;:17;12849:353;;;12954:5;;12895:14;;12912:48;;:37;12928:20;:5;12938:9;12928;:20::i;:::-;12912:11;;;:15;:37::i;:48::-;12895:65;;12983:16;13002:52;13033:20;13047:5;;13033:9;:13;;:20;;;;:::i;:::-;13002:26;13012:15;13021:5;;13012:4;;:8;;:15;;;;:::i;:::-;13002:5;;:9;:26::i;:::-;:30;;:52::i;:::-;12983:71;;13077:14;13106:11;13094:9;:23;;;;;;;-1:-1:-1;13144:13:0;;13140:42;;13159:23;13165:5;13172:9;13159:5;:23::i;:::-;12849:353;;;;12687:530;;;12661:626;;;13238:11;;13234:53;;13274:1;13266:5;:9;13234:53;12421:873;;;;;;:::o;4522:303::-;4567:6;4594:1;4590;:5;4586:232;;;-1:-1:-1;4616:1:0;4649;4645;4641:5;;:9;4665:92;4676:1;4672;:5;4665:92;;;4702:1;4698:5;;4740:1;4735;4731;4727;:5;;;;;;:9;4726:15;;;;;;4722:19;;4665:92;;;4586:232;;;;4778:6;;4774:44;;-1:-1:-1;4805:1:0;4774:44;4522:303;;;:::o;2027:201::-;2100:11;;:22;;2116:5;2100:15;:22::i;:::-;2086:11;:36;;;-1:-1:-1;;;;;2149:13:0;;;;:9;:13;;;;;;:24;;2167:5;2149:17;:24::i;:::-;-1:-1:-1;;;;;2133:13:0;;;;;;:9;:13;;;;;;;;:40;;;;2189:31;;;;;;;2133:13;;;;2189:31;;;;;;;;;;2027:201;;:::o;4308:96::-;4360:6;4387:1;4383;:5;:13;;4395:1;4383:13;;;4391:1;4383:13;4379:17;4308:96;-1:-1:-1;;;4308:96:0:o;2236:209::-;-1:-1:-1;;;;;2315:15:0;;;;;;:9;:15;;;;;;:26;;2335:5;2315:19;:26::i;:::-;-1:-1:-1;;;;;2297:15:0;;;;;;:9;:15;;;;;:44;;;;2366:11;:22;;2382:5;2366:15;:22::i;:::-;2352:11;:36;;;2404:33;;;;;;;;-1:-1:-1;;;;;2404:33:0;;;;;;;;;;;;;2236:209;;:::o;5186:120::-;-1:-1:-1;;;;;5262:10:0;-1:-1:-1;;;5262:17:0;;5186:120::o;5377:108::-;5437:9;-1:-1:-1;;;;;5467:10:0;;-1:-1:-1;;;;;5463:14:0;;5467:10;5463:14;;;;;;5377:108;-1:-1:-1;;;5377:108:0:o;226:128::-;310:5;;;305:16;;;;297:49;;;;;-1:-1:-1;;;297:49:0;;;;;;;;;;;;-1:-1:-1;;;297:49:0;;;;;;;;;;;;;

Swarm Source

ipfs://34fc8e76ffcc0041f72ed96a55b813cb8ce57dfd6be9adb80d191ef52cf8c2b5
[ 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.