Contract 0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1705c5da0c6773c7857a56b46d1bda5ac98098cb1c049d629b58d891a94883c2Approve239527752022-01-20 16:27:333 days 14 hrs ago0x06783487ef7579d65a619b8a16abaf3497fba4bc IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.00245470919 52.841718491
0x62a8fe1db918e746820e98e8a2323005c99ac6ccf560e890f7894aed187794b7Transfer238575932022-01-18 7:22:365 days 23 hrs ago0x7b514beb1403dbe7b6179e8601ecc88ede45fe89 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.00173831142637.187904898
0x2050e4411af68841ce851acca72ea8913c2b91cc46305b34de1166e453b3a05dApprove238447852022-01-17 23:42:206 days 7 hrs ago0xee0a2928f82a2b214f4343e7e5d2a671c640d63a IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.00079667555
0x41067e8ef356b4655e2b70c574b818951c0d6492c0ce910aaab744dd5a823601Approve238444922022-01-17 23:32:186 days 7 hrs ago0xee0a2928f82a2b214f4343e7e5d2a671c640d63a IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.000869160
0x85daa48f67093a601761dbef7580a87df44903b93129df389f0bc41ed30a7505Transfer237598672022-01-15 20:21:348 days 10 hrs ago0xfa50671b1e38945774f0a5224160b45c8b545f29 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0005833230
0x403fd3dda314f3483dd66ec74d3ec0ecc57a12bad40f20c1129d1323297ae18fTransfer237596432022-01-15 20:13:548 days 11 hrs ago0xc854fe6c03f04d4cce908896af4731382f182886 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0010963230
0xc29a7e8a93f586640944506507034a4e46a41520f304dbc8a3d01b8066dcf159Transfer237596202022-01-15 20:13:088 days 11 hrs ago0xfa50671b1e38945774f0a5224160b45c8b545f29 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0036154899
0x206c66bc1b4d5dc14f20d550e7f3fefc1a242b2813193b72cef464c7e0baa1e3Approve237544222022-01-15 17:03:448 days 14 hrs ago0x689ca2d9beaca70b89afff84bc0c3bae78979b43 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0013936230
0x54b90704a49141c4ebd296864746bf22c68ed6df492a1af52c2d2879862f4c7aApprove235324462022-01-09 21:32:0314 days 9 hrs ago0x150afc19f3592521f969fe33f620203253e441f5 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0010621640
0x71872367f0fc4a56631ee43cc4f670e6f310a5cc0846fc0e9354e224b9a33714Approve235324282022-01-09 21:31:2714 days 9 hrs ago0x150afc19f3592521f969fe33f620203253e441f5 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0018581640
0x6e65731b9624f766911bea7f71fe43632b980bdb32fb1b344182b9c1d03eb7e6Approve230345162021-12-27 19:19:0427 days 11 hrs ago0xd834230846646dad14c51006bb67b86f870cf1d5 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.00455249298
0xdcf5e4512923c47f63097ba83cec31ed5936352718b81862bc6c1d84e105a808Approve229510612021-12-25 16:05:4729 days 15 hrs ago0xc4545634ef8bfcfc1f7e396ede6d16ca3512ca75 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.004831216104
0xcdcf7315d760c0023b8875736a542682bb73e250a252e43dd181ca3a0efd6116Transfer229366102021-12-25 7:12:4230 days 4 mins ago0x643700b0703c013a66d20f85538006fe3d497669 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0010952430
0xf6488b58b71a28bf099811609da2e5853b8dbdfa9c54c4c49477084f8ef07bbdTransfer229109862021-12-24 15:33:1230 days 15 hrs ago0x7361eeecedfab8bd54b64d2ae18ab58458c4a631 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0010963230
0x2fedc1259da7b75d55e25b16c5f796d98426272e4a6673fa39e2c74de4e0ec41Approve229081282021-12-24 13:47:4630 days 17 hrs ago0x06783487ef7579d65a619b8a16abaf3497fba4bc IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0013936230
0x9988f4d5ed6dd2c144fbfec7ebbd4c75b934ec9fbcd5b9050505fd3fe063740fApprove229036992021-12-24 11:06:5730 days 20 hrs ago0x452c075125f04582771c0a420b80218894754991 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0013936230
0xc20c388ed05383279c67843f19626adb937ff8fb27f2e250675b5b821e4fa4a7Approve228904962021-12-24 2:42:5231 days 4 hrs ago0x514491f7d867c5c30c2659e836c7409609b14c3e IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0043455300
0xfe0ed2954cb9d0fc4305ab6df2864eb328906c09367eed5eff09cfbc0c8cad40Approve228251442021-12-22 10:44:0932 days 20 hrs ago0xc4545634ef8bfcfc1f7e396ede6d16ca3512ca75 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.00450603897
0x1e0d6dd766e86bfd54479eb808646e56ed8cc354082e944612f9ed7fdaa6482eApprove228077632021-12-22 0:03:4933 days 7 hrs ago0xd3a2a4287647f61eb43922682e96fc9b434605a7 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0013936230
0x5762a410179ca9b4e78443d74fa57065be4f677e52e9d523e11f7af767ffa98aApprove227447642021-12-20 10:01:1634 days 21 hrs ago0xa706ed4676204e1b9b3aa005cf8ab5c92d30a830 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0013936230
0xe4d41bcd3e52abcd35c22f5ea89cee5067323057dd5fa8fdf1d27a77b5559d30Approve226083792021-12-16 22:49:5838 days 8 hrs ago0xf4de53a234dfa4a16fee8e0e01fe1cdd53b53232 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0013936230
0x373fd196eac82e05e5179a613a33574e97a62deb0745f2177e1d0af141d89a8bTransfer225951992021-12-16 14:47:3238 days 16 hrs ago0xc4545634ef8bfcfc1f7e396ede6d16ca3512ca75 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0010963230
0xb9c95c359a040cc404f8038d422f652957feee74d3d1a30ff26e180a46518c56Approve225715872021-12-16 0:31:0939 days 6 hrs ago0xc4545634ef8bfcfc1f7e396ede6d16ca3512ca75 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.002322750
0xbd1ad595b960675ba25ac1657d36f4e3b7de4d105d5dd2e2a4445c8e5304193aApprove224833902021-12-13 18:23:1441 days 12 hrs ago0x8dadfd1a8f625c21bd851d3df165176b1022481e IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.0043455300
0x7194eda27ac9d6864ecb25ad3bc320054ff5c39a6cf4ed08a2a66178e0a62007Approve224525292021-12-12 22:20:4542 days 8 hrs ago0xd834230846646dad14c51006bb67b86f870cf1d5 IN  0xebc4f9b1ce66258ac3a48578ffeeba1330ddb68b0 MATIC0.004691854101
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x603ce42815eddbd9b0f8d676bc24bb287614691f9c03b93068b6f12e0f2001db116151092021-03-05 0:36:07325 days 6 hrs ago 0xe7fb3e833efe5f9c441105eb65ef8b261266423b  Contract Creation0 MATIC
[ Download CSV Export 
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x34832d9ac4127a232c1919d840f7aae0fcb7315b

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 polygonscan.com on 2021-09-03
*/

// Sources flattened with hardhat v2.6.2 https://hardhat.org
// SPDX-License-Identifier: MIT
// File contracts/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/UniswapV2ERC20.sol



contract UniswapV2ERC20 {
    using SafeMathUniswap for uint;

    string public constant name = 'Dfyn LP Token';
    string public constant symbol = 'DFYNLP';
    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/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/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/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/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 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/interfaces/IUniswapV2Callee.sol


pragma solidity >=0.5.0;

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


// File contracts/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 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);

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

    // called once by the factory at time of deployment
    function initialize(address _token0, address _token1) external {
        require(msg.sender == factory, 'UniswapV2: FORBIDDEN'); // sufficient check
        token0 = _token0;
        token1 = _token1;
    }

    // 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 1/6th 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));
                    uint denominator = rootK.mul(5).add(rootKLast);
                    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(3));
        uint balance1Adjusted = balance1.mul(1000).sub(amount1In.mul(3));
        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 Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":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":[{"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":[{"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"}],"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":"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"}]

60806040526001600c5534801561001557600080fd5b50604080518082018252600d81526c22333cb7102628102a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f7b22882e5b452c59eb82cd96750b3131da802adf196db6c4fb438a8e1703f576818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b031916331790556123758061010b6000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610534578063d505accf1461053c578063dd62ed3e1461058d578063fff6cae9146105bb576101a9565b8063ba9a7a56146104fe578063bc25cf7714610506578063c45a01551461052c576101a9565b80637ecebe00116100d35780637ecebe001461046557806389afcb441461048b57806395d89b41146104ca578063a9059cbb146104d2576101a9565b80636a6278421461041157806370a08231146104375780637464fc3d1461045d576101a9565b806323b872dd116101665780633644e515116101405780633644e515146103cb578063485cc955146103d35780635909c0d5146104015780635a3d549314610409576101a9565b806323b872dd1461036f57806330adf81f146103a5578063313ce567146103ad576101a9565b8063022c0d9f146101ae57806306fdde031461023c5780630902f1ac146102b9578063095ea7b3146102f15780630dfe16811461033157806318160ddd14610355575b600080fd5b61023a600480360360808110156101c457600080fd5b8135916020810135916001600160a01b0360408301351691908101906080810160608201356401000000008111156101fb57600080fd5b82018360208201111561020d57600080fd5b8035906020019184600183028401116401000000008311171561022f57600080fd5b5090925090506105c3565b005b610244610acb565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561027e578181015183820152602001610266565b50505050905090810190601f1680156102ab5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102c1610af4565b604080516001600160701b03948516815292909316602083015263ffffffff168183015290519081900360600190f35b61031d6004803603604081101561030757600080fd5b506001600160a01b038135169060200135610b1e565b604080519115158252519081900360200190f35b610339610b35565b604080516001600160a01b039092168252519081900360200190f35b61035d610b44565b60408051918252519081900360200190f35b61031d6004803603606081101561038557600080fd5b506001600160a01b03813581169160208101359091169060400135610b4a565b61035d610bde565b6103b5610c02565b6040805160ff9092168252519081900360200190f35b61035d610c07565b61023a600480360360408110156103e957600080fd5b506001600160a01b0381358116916020013516610c0d565b61035d610c91565b61035d610c97565b61035d6004803603602081101561042757600080fd5b50356001600160a01b0316610c9d565b61035d6004803603602081101561044d57600080fd5b50356001600160a01b0316611119565b61035d61112b565b61035d6004803603602081101561047b57600080fd5b50356001600160a01b0316611131565b6104b1600480360360208110156104a157600080fd5b50356001600160a01b0316611143565b6040805192835260208301919091528051918290030190f35b6102446114d7565b61031d600480360360408110156104e857600080fd5b506001600160a01b0381351690602001356114f9565b61035d611506565b61023a6004803603602081101561051c57600080fd5b50356001600160a01b031661150c565b61033961167e565b61033961168d565b61023a600480360360e081101561055257600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561169c565b61035d600480360360408110156105a357600080fd5b506001600160a01b038135811691602001351661189e565b61023a6118bb565b600c5460011461060e576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55841515806106215750600084115b61065c5760405162461bcd60e51b81526004018080602001828103825260258152602001806122866025913960400191505060405180910390fd5b600080610667610af4565b5091509150816001600160701b03168710801561068c5750806001600160701b031686105b6106c75760405162461bcd60e51b81526004018080602001828103825260218152602001806122cf6021913960400191505060405180910390fd5b60065460075460009182916001600160a01b039182169190811690891682148015906107055750806001600160a01b0316896001600160a01b031614155b61074e576040805162461bcd60e51b8152602060048201526015602482015274556e697377617056323a20494e56414c49445f544f60581b604482015290519081900360640190fd5b8a1561075f5761075f828a8d611a1d565b891561077057610770818a8c611a1d565b861561082257886001600160a01b03166310d1e85c338d8d8c8c6040518663ffffffff1660e01b815260040180866001600160a01b03168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b505050505b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561086857600080fd5b505afa15801561087c573d6000803e3d6000fd5b505050506040513d602081101561089257600080fd5b5051604080516370a0823160e01b815230600482015290519195506001600160a01b038316916370a0823191602480820192602092909190829003018186803b1580156108de57600080fd5b505afa1580156108f2573d6000803e3d6000fd5b505050506040513d602081101561090857600080fd5b5051925060009150506001600160701b0385168a9003831161092b57600061093a565b89856001600160701b03160383035b9050600089856001600160701b0316038311610957576000610966565b89856001600160701b03160383035b905060008211806109775750600081115b6109b25760405162461bcd60e51b81526004018080602001828103825260248152602001806122ab6024913960400191505060405180910390fd5b60006109d46109c2846003611bb7565b6109ce876103e8611bb7565b90611c1a565b905060006109e66109c2846003611bb7565b9050610a0b620f4240610a056001600160701b038b8116908b16611bb7565b90611bb7565b610a158383611bb7565b1015610a57576040805162461bcd60e51b815260206004820152600c60248201526b556e697377617056323a204b60a01b604482015290519081900360640190fd5b5050610a6584848888611c6a565b60408051838152602081018390528082018d9052606081018c905290516001600160a01b038b169133917fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d8229181900360800190a350506001600c55505050505050505050565b6040518060400160405280600d81526020016c22333cb7102628102a37b5b2b760991b81525081565b6008546001600160701b0380821692600160701b830490911691600160e01b900463ffffffff1690565b6000610b2b338484611e29565b5060015b92915050565b6006546001600160a01b031681565b60005481565b6001600160a01b038316600090815260026020908152604080832033845290915281205460001914610bc9576001600160a01b0384166000908152600260209081526040808320338452909152902054610ba49083611c1a565b6001600160a01b03851660009081526002602090815260408083203384529091529020555b610bd4848484611e8b565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005546001600160a01b03163314610c63576040805162461bcd60e51b81526020600482015260146024820152732ab734b9bbb0b82b191d102327a92124a22222a760611b604482015290519081900360640190fd5b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b60095481565b600a5481565b6000600c54600114610cea576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c81905580610cfa610af4565b50600654604080516370a0823160e01b815230600482015290519395509193506000926001600160a01b03909116916370a08231916024808301926020929190829003018186803b158015610d4e57600080fd5b505afa158015610d62573d6000803e3d6000fd5b505050506040513d6020811015610d7857600080fd5b5051600754604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015610dcb57600080fd5b505afa158015610ddf573d6000803e3d6000fd5b505050506040513d6020811015610df557600080fd5b505190506000610e0e836001600160701b038716611c1a565b90506000610e25836001600160701b038716611c1a565b90506000610e338787611f39565b6000549091508061100a5760055460408051637cd07e4760e01b815290516000926001600160a01b031691637cd07e47916004808301926020929190829003018186803b158015610e8357600080fd5b505afa158015610e97573d6000803e3d6000fd5b505050506040513d6020811015610ead57600080fd5b50519050336001600160a01b0382161415610f8857806001600160a01b03166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b158015610efb57600080fd5b505afa158015610f0f573d6000803e3d6000fd5b505050506040513d6020811015610f2557600080fd5b505199508915801590610f3a57506000198a14155b610f83576040805162461bcd60e51b81526020600482015260156024820152744261642064657369726564206c697175696469747960581b604482015290519081900360640190fd5b611004565b6001600160a01b03811615610fdd576040805162461bcd60e51b815260206004820152601660248201527526bab9ba103737ba103430bb329036b4b3b930ba37b960511b604482015290519081900360640190fd5b610ff56103e86109ce610ff08888611bb7565b612079565b995061100460006103e86120cb565b5061104d565b61104a6001600160701b0389166110218684611bb7565b8161102857fe5b046001600160701b03891661103d8685611bb7565b8161104457fe5b04612155565b98505b6000891161108c5760405162461bcd60e51b81526004018080602001828103825260288152602001806123186028913960400191505060405180910390fd5b6110968a8a6120cb565b6110a286868a8a611c6a565b81156110cc576008546110c8906001600160701b0380821691600160701b900416611bb7565b600b555b6040805185815260208101859052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a250506001600c5550949695505050505050565b60016020526000908152604090205481565b600b5481565b60046020526000908152604090205481565b600080600c54600114611191576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c819055806111a1610af4565b50600654600754604080516370a0823160e01b815230600482015290519496509294506001600160a01b039182169391169160009184916370a08231916024808301926020929190829003018186803b1580156111fd57600080fd5b505afa158015611211573d6000803e3d6000fd5b505050506040513d602081101561122757600080fd5b5051604080516370a0823160e01b815230600482015290519192506000916001600160a01b038516916370a08231916024808301926020929190829003018186803b15801561127557600080fd5b505afa158015611289573d6000803e3d6000fd5b505050506040513d602081101561129f57600080fd5b5051306000908152600160205260408120549192506112be8888611f39565b600054909150806112cf8487611bb7565b816112d657fe5b049a50806112e48486611bb7565b816112eb57fe5b04995060008b1180156112fe575060008a115b6113395760405162461bcd60e51b81526004018080602001828103825260288152602001806122f06028913960400191505060405180910390fd5b611343308461216d565b61134e878d8d611a1d565b611359868d8c611a1d565b604080516370a0823160e01b815230600482015290516001600160a01b038916916370a08231916024808301926020929190829003018186803b15801561139f57600080fd5b505afa1580156113b3573d6000803e3d6000fd5b505050506040513d60208110156113c957600080fd5b5051604080516370a0823160e01b815230600482015290519196506001600160a01b038816916370a0823191602480820192602092909190829003018186803b15801561141557600080fd5b505afa158015611429573d6000803e3d6000fd5b505050506040513d602081101561143f57600080fd5b5051935061144f85858b8b611c6a565b811561147957600854611475906001600160701b0380821691600160701b900416611bb7565b600b555b604080518c8152602081018c905281516001600160a01b038f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a35050505050505050506001600c81905550915091565b6040518060400160405280600681526020016504446594e4c560d41b81525081565b6000610b2b338484611e8b565b6103e881565b600c54600114611557576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654600754600854604080516370a0823160e01b815230600482015290516001600160a01b03948516949093169261160092859287926115fb926001600160701b03169185916370a0823191602480820192602092909190829003018186803b1580156115c957600080fd5b505afa1580156115dd573d6000803e3d6000fd5b505050506040513d60208110156115f357600080fd5b505190611c1a565b611a1d565b61167481846115fb6008600e9054906101000a90046001600160701b03166001600160701b0316856001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156115c957600080fd5b50506001600c5550565b6005546001600160a01b031681565b6007546001600160a01b031681565b428410156116e6576040805162461bcd60e51b8152602060048201526012602482015271155b9a5cddd85c158c8e881156141254915160721b604482015290519081900360640190fd5b6003546001600160a01b0380891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015611801573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906118375750886001600160a01b0316816001600160a01b0316145b611888576040805162461bcd60e51b815260206004820152601c60248201527f556e697377617056323a20494e56414c49445f5349474e415455524500000000604482015290519081900360640190fd5b611893898989611e29565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b600c54600114611906576040805162461bcd60e51b8152602060048201526011602482015270155b9a5cddd85c158c8e881313d0d2d151607a1b604482015290519081900360640190fd5b6000600c55600654604080516370a0823160e01b81523060048201529051611a16926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561195757600080fd5b505afa15801561196b573d6000803e3d6000fd5b505050506040513d602081101561198157600080fd5b5051600754604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156119ce57600080fd5b505afa1580156119e2573d6000803e3d6000fd5b505050506040513d60208110156119f857600080fd5b50516008546001600160701b0380821691600160701b900416611c6a565b6001600c55565b604080518082018252601981527f7472616e7366657228616464726573732c75696e74323536290000000000000060209182015281516001600160a01b0385811660248301526044808301869052845180840390910181526064909201845291810180516001600160e01b031663a9059cbb60e01b1781529251815160009460609489169392918291908083835b60208310611aca5780518252601f199092019160209182019101611aab565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611b2c576040519150601f19603f3d011682016040523d82523d6000602084013e611b31565b606091505b5091509150818015611b5f575080511580611b5f5750808060200190516020811015611b5c57600080fd5b50515b611bb0576040805162461bcd60e51b815260206004820152601a60248201527f556e697377617056323a205452414e534645525f4641494c4544000000000000604482015290519081900360640190fd5b5050505050565b6000811580611bd257505080820282828281611bcf57fe5b04145b610b2f576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6d756c2d6f766572666c6f7760601b604482015290519081900360640190fd5b80820382811115610b2f576040805162461bcd60e51b815260206004820152601560248201527464732d6d6174682d7375622d756e646572666c6f7760581b604482015290519081900360640190fd5b6001600160701b038411801590611c8857506001600160701b038311155b611ccf576040805162461bcd60e51b8152602060048201526013602482015272556e697377617056323a204f564552464c4f5760681b604482015290519081900360640190fd5b60085463ffffffff42811691600160e01b90048116820390811615801590611cff57506001600160701b03841615155b8015611d1357506001600160701b03831615155b15611d7e578063ffffffff16611d3b85611d2c866121ff565b6001600160e01b031690612211565b600980546001600160e01b03929092169290920201905563ffffffff8116611d6684611d2c876121ff565b600a80546001600160e01b0392909216929092020190555b600880546dffffffffffffffffffffffffffff19166001600160701b03888116919091176dffffffffffffffffffffffffffff60701b1916600160701b8883168102919091176001600160e01b0316600160e01b63ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b6001600160a01b03808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316600090815260016020526040902054611eae9082611c1a565b6001600160a01b038085166000908152600160205260408082209390935590841681522054611edd9082612236565b6001600160a01b0380841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600080600560009054906101000a90046001600160a01b03166001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015611f8a57600080fd5b505afa158015611f9e573d6000803e3d6000fd5b505050506040513d6020811015611fb457600080fd5b5051600b546001600160a01b038216158015945091925090612065578015612060576000611ff1610ff06001600160701b03888116908816611bb7565b90506000611ffe83612079565b90508082111561205d5760006120206120178484611c1a565b60005490611bb7565b9050600061203983612033866005611bb7565b90612236565b9050600081838161204657fe5b04905080156120595761205987826120cb565b5050505b50505b612071565b8015612071576000600b555b505092915050565b600060038211156120bc575080600160028204015b818110156120b6578091506002818285816120a557fe5b0401816120ae57fe5b04905061208e565b506120c6565b81156120c6575060015b919050565b6000546120d89082612236565b60009081556001600160a01b0383168152600160205260409020546120fd9082612236565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008183106121645781612166565b825b9392505050565b6001600160a01b0382166000908152600160205260409020546121909082611c1a565b6001600160a01b038316600090815260016020526040812091909155546121b79082611c1a565b60009081556040805183815290516001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6001600160701b0316600160701b0290565b60006001600160701b0382166001600160e01b0384168161222e57fe5b049392505050565b80820182811015610b2f576040805162461bcd60e51b815260206004820152601460248201527364732d6d6174682d6164642d6f766572666c6f7760601b604482015290519081900360640190fdfe556e697377617056323a20494e53554646494349454e545f4f55545055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f494e5055545f414d4f554e54556e697377617056323a20494e53554646494349454e545f4c4951554944495459556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4255524e4544556e697377617056323a20494e53554646494349454e545f4c49515549444954595f4d494e544544a2646970667358221220a2182ae03ffdbf418baa5d0a0113190018a8f47df33fcce4fb3327214a1f241b64736f6c634300060c0033

Deployed ByteCode Sourcemap

7715:10161:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15352:1903;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15352:1903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15352:1903:0;;-1:-1:-1;15352:1903:0;-1:-1:-1;15352:1903:0;:::i;:::-;;847:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8727:231;;;:::i;:::-;;;;-1:-1:-1;;;;;8727:231:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2899:147;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2899:147:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;8016:21;;;:::i;:::-;;;;-1:-1:-1;;;;;8016:21:0;;;;;;;;;;;;;;988:24;;;:::i;:::-;;;;;;;;;;;;;;;;3201:301;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3201:301:0;;;;;;;;;;;;;;;;;:::i;1280:108::-;;;:::i;946:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1137:31;;;:::i;9787:210::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9787:210:0;;;;;;;;;;:::i;8367:32::-;;;:::i;8406:::-;;;:::i;11981:1653::-;;;;;;;;;;;;;;;;-1:-1:-1;11981:1653:0;-1:-1:-1;;;;;11981:1653:0;;:::i;1019:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1019:41:0;-1:-1:-1;;;;;1019:41:0;;:::i;8445:17::-;;;:::i;1395:38::-;;;;;;;;;;;;;;;;-1:-1:-1;1395:38:0;-1:-1:-1;;;;;1395:38:0;;:::i;13746:1494::-;;;;;;;;;;;;;;;;-1:-1:-1;13746:1494:0;-1:-1:-1;;;;;13746:1494:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;899:40;;;:::i;3054:139::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3054:139:0;;;;;;;;:::i;7837:46::-;;;:::i;17304:348::-;;;;;;;;;;;;;;;;-1:-1:-1;17304:348:0;-1:-1:-1;;;;;17304:348:0;;:::i;7987:22::-;;;:::i;8044:21::-;;;:::i;3510:674::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3510:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1067:61::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1067:61:0;;;;;;;;;;:::i;17701:172::-;;;:::i;15352:1903::-;8618:8;;8630:1;8618:13;8610:43;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;;;;8675:1;8664:8;:12;15466:14;;;;:32:::1;;;15497:1;15484:10;:14;15466:32;15458:82;;;;-1:-1:-1::0;;;15458:82:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15552:17;15571::::0;15593:13:::1;:11;:13::i;:::-;15551:55;;;;;15653:9;-1:-1:-1::0;;;;;15640:22:0::1;:10;:22;:48;;;;;15679:9;-1:-1:-1::0;;;;;15666:22:0::1;:10;:22;15640:48;15632:94;;;;-1:-1:-1::0;;;15632:94:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15871:6;::::0;15906::::1;::::0;15739:13:::1;::::0;;;-1:-1:-1;;;;;15871:6:0;;::::1;::::0;15906;;::::1;::::0;15931:13;::::1;::::0;::::1;::::0;::::1;::::0;:30:::1;;;15954:7;-1:-1:-1::0;;;;;15948:13:0::1;:2;-1:-1:-1::0;;;;;15948:13:0::1;;;15931:30;15923:64;;;::::0;;-1:-1:-1;;;15923:64:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15923:64:0;;;;;;;;;;;;;::::1;;16002:14:::0;;15998:58:::1;;16018:38;16032:7;16041:2;16045:10;16018:13;:38::i;:::-;16105:14:::0;;16101:58:::1;;16121:38;16135:7;16144:2;16148:10;16121:13;:38::i;:::-;16208:15:::0;;16204:97:::1;;16242:2;-1:-1:-1::0;;;;;16225:34:0::1;;16260:10;16272;16284;16296:4;;16225:76;;;;;;;;;;;;;-1:-1:-1::0;;;;;16225:76:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16204:97;16323:47;::::0;;-1:-1:-1;;;16323:47:0;;16364:4:::1;16323:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;16323:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16323:47:0;16392::::1;::::0;;-1:-1:-1;;;16392:47:0;;16433:4:::1;16392:47;::::0;::::1;::::0;;;16323;;-1:-1:-1;;;;;;16392:32:0;::::1;::::0;::::1;::::0;:47;;;;;16323::::1;::::0;16392;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;16392:47:0;;-1:-1:-1;16461:14:0::1;::::0;-1:-1:-1;;;;;;;16489:22:0;::::1;::::0;;::::1;16478:33:::0;::::1;:75;;16552:1;16478:75;;;16538:10;16526:9;-1:-1:-1::0;;;;;16526:22:0::1;;16514:8;:35;16478:75;16461:92;;16564:14;16604:10;16592:9;-1:-1:-1::0;;;;;16592:22:0::1;;16581:8;:33;:75;;16655:1;16581:75;;;16641:10;16629:9;-1:-1:-1::0;;;;;16629:22:0::1;;16617:8;:35;16581:75;16564:92;;16687:1;16675:9;:13;:30;;;;16704:1;16692:9;:13;16675:30;16667:79;;;;-1:-1:-1::0;;;16667:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16832:21;16856:40;16879:16;:9:::0;16893:1:::1;16879:13;:16::i;:::-;16856:18;:8:::0;16869:4:::1;16856:12;:18::i;:::-;:22:::0;::::1;:40::i;:::-;16832:64:::0;-1:-1:-1;16907:21:0::1;16931:40;16954:16;:9:::0;16968:1:::1;16954:13;:16::i;16931:40::-;16907:64:::0;-1:-1:-1;17032:43:0::1;17067:7;17032:30;-1:-1:-1::0;;;;;17032:15:0;;::::1;::::0;:30;::::1;:19;:30::i;:::-;:34:::0;::::1;:43::i;:::-;16990:38;:16:::0;17011;16990:20:::1;:38::i;:::-;:85;;16982:110;;;::::0;;-1:-1:-1;;;16982:110:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;16982:110:0;;;;;;;;;;;;;::::1;;8687:1;;17116:49;17124:8;17134;17144:9;17155;17116:7;:49::i;:::-;17181:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17181:66:0;::::1;::::0;17186:10:::1;::::0;17181:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;8710:1:0;8699:8;:12;-1:-1:-1;;;;;;;;;15352:1903:0:o;847:45::-;;;;;;;;;;;;;;-1:-1:-1;;;847:45:0;;;;:::o;8727:231::-;8860:8;;-1:-1:-1;;;;;8860:8:0;;;;-1:-1:-1;;;8891:8:0;;;;;;-1:-1:-1;;;8932:18:0;;;;;8727:231::o;2899:147::-;2963:4;2980:36;2989:10;3001:7;3010:5;2980:8;:36::i;:::-;-1:-1:-1;3034:4:0;2899:147;;;;;:::o;8016:21::-;;;-1:-1:-1;;;;;8016:21:0;;:::o;988:24::-;;;;:::o;3201:301::-;-1:-1:-1;;;;;3300:15:0;;3279:4;3300:15;;;:9;:15;;;;;;;;3316:10;3300:27;;;;;;;;-1:-1:-1;;3300:39:0;3296:140;;-1:-1:-1;;;;;3386:15:0;;;;;;:9;:15;;;;;;;;3402:10;3386:27;;;;;;;;:38;;3418:5;3386:31;:38::i;:::-;-1:-1:-1;;;;;3356:15:0;;;;;;:9;:15;;;;;;;;3372:10;3356:27;;;;;;;:68;3296:140;3446:26;3456:4;3462:2;3466:5;3446:9;:26::i;:::-;-1:-1:-1;3490:4:0;3201:301;;;;;:::o;1280:108::-;1322:66;1280:108;:::o;946:35::-;979:2;946:35;:::o;1137:31::-;;;;:::o;9787:210::-;9883:7;;-1:-1:-1;;;;;9883:7:0;9869:10;:21;9861:54;;;;;-1:-1:-1;;;9861:54:0;;;;;;;;;;;;-1:-1:-1;;;9861:54:0;;;;;;;;;;;;;;;9946:6;:16;;-1:-1:-1;;;;;9946:16:0;;;-1:-1:-1;;;;;;9946:16:0;;;;;;;9973:6;:16;;;;;;;;;;;9787:210::o;8367:32::-;;;;:::o;8406:::-;;;;:::o;11981:1653::-;12030:14;8618:8;;8630:1;8618:13;8610:43;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;;;;8675:1;8664:8;:12;;;8675:1;12099:13:::1;:11;:13::i;:::-;-1:-1:-1::0;12168:6:0::1;::::0;12154:46:::1;::::0;;-1:-1:-1;;;12154:46:0;;12194:4:::1;12154:46;::::0;::::1;::::0;;;12057:55;;-1:-1:-1;12057:55:0;;-1:-1:-1;12138:13:0::1;::::0;-1:-1:-1;;;;;12168:6:0;;::::1;::::0;12154:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;12168:6;12154:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12154:46:0;12241:6:::1;::::0;12227:46:::1;::::0;;-1:-1:-1;;;12227:46:0;;12267:4:::1;12227:46;::::0;::::1;::::0;;;12154;;-1:-1:-1;12211:13:0::1;::::0;-1:-1:-1;;;;;12241:6:0;;::::1;::::0;12227:31:::1;::::0;:46;;;;;12154::::1;::::0;12227;;;;;;;;12241:6;12227:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12227:46:0;;-1:-1:-1;12284:12:0::1;12299:23;:8:::0;-1:-1:-1;;;;;12299:23:0;::::1;:12;:23::i;:::-;12284:38:::0;-1:-1:-1;12333:12:0::1;12348:23;:8:::0;-1:-1:-1;;;;;12348:23:0;::::1;:12;:23::i;:::-;12333:38;;12384:10;12397:30;12406:9;12417;12397:8;:30::i;:::-;12438:17;12458:11:::0;12384:43;;-1:-1:-1;12562:17:0;12558:751:::1;;12633:7;::::0;12615:37:::1;::::0;;-1:-1:-1;;;12615:37:0;;;;12596:16:::1;::::0;-1:-1:-1;;;;;12633:7:0::1;::::0;12615:35:::1;::::0;:37:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;12633:7;12615:37;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12615:37:0;;-1:-1:-1;12671:10:0::1;-1:-1:-1::0;;;;;12671:22:0;::::1;;12667:500;;;12736:8;-1:-1:-1::0;;;;;12726:36:0::1;;:38;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12726:38:0;;-1:-1:-1;12791:13:0;;;;;:41:::1;;;-1:-1:-1::0;;12808:9:0::1;:24;;12791:41;12783:75;;;::::0;;-1:-1:-1;;;12783:75:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12783:75:0;;;;;;;;;;;;;::::1;;12667:500;;;-1:-1:-1::0;;;;;12907:22:0;::::1;::::0;12899:57:::1;;;::::0;;-1:-1:-1;;;12899:57:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12899:57:0;;;;;;;;;;;;;::::1;;12987:54;7878:5;12987:31;12997:20;:7:::0;13009;12997:11:::1;:20::i;:::-;12987:9;:31::i;:54::-;12975:66;;13060:36;13074:1;7878:5;13060;:36::i;:::-;12558:751;;;;13211:86;-1:-1:-1::0;;;;;13220:37:0;::::1;:25;:7:::0;13232:12;13220:11:::1;:25::i;:::-;:37;;;;;;-1:-1:-1::0;;;;;13259:37:0;::::1;:25;:7:::0;13271:12;13259:11:::1;:25::i;:::-;:37;;;;;;13211:8;:86::i;:::-;13199:98;;12558:751;13339:1;13327:9;:13;13319:66;;;;-1:-1:-1::0;;;13319:66:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13396:20;13402:2;13406:9;13396:5;:20::i;:::-;13429:49;13437:8;13447;13457:9;13468;13429:7;:49::i;:::-;13493:5;13489:47;;;13527:8;::::0;13508:28:::1;::::0;-1:-1:-1;;;;;13513:8:0;;::::1;::::0;-1:-1:-1;;;13527:8:0;::::1;;13508:18;:28::i;:::-;13500:5;:36:::0;13489:47:::1;13592:34;::::0;;;;;::::1;::::0;::::1;::::0;;;;;13597:10:::1;::::0;13592:34:::1;::::0;;;;;;::::1;-1:-1:-1::0;;8710:1:0;8699:8;:12;-1:-1:-1;11981:1653:0;;;-1:-1:-1;;;;;;11981:1653:0:o;1019:41::-;;;;;;;;;;;;;:::o;8445:17::-;;;;:::o;1395:38::-;;;;;;;;;;;;;:::o;13746:1494::-;13795:12;13809;8618:8;;8630:1;8618:13;8610:43;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;;;;8675:1;8664:8;:12;;;8675:1;13876:13:::1;:11;:13::i;:::-;-1:-1:-1::0;13933:6:0::1;::::0;14014::::1;::::0;14093:47:::1;::::0;;-1:-1:-1;;;14093:47:0;;14134:4:::1;14093:47;::::0;::::1;::::0;;;13834:55;;-1:-1:-1;13834:55:0;;-1:-1:-1;;;;;;13933:6:0;;::::1;::::0;14014;::::1;::::0;13915:15:::1;::::0;13933:6;;14093:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;13933:6;14093:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14093:47:0;14167::::1;::::0;;-1:-1:-1;;;14167:47:0;;14208:4:::1;14167:47;::::0;::::1;::::0;;;14093;;-1:-1:-1;14151:13:0::1;::::0;-1:-1:-1;;;;;14167:32:0;::::1;::::0;::::1;::::0;:47;;;;;14093::::1;::::0;14167;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14167:47:0;14260:4:::1;14225:14;14242:24:::0;;;:9:::1;14167:47;14242:24:::0;;;;;14167:47;;-1:-1:-1;14292:30:0::1;14301:9:::0;14312;14292:8:::1;:30::i;:::-;14333:17;14353:11:::0;14279:43;;-1:-1:-1;14353:11:0;14463:23:::1;:9:::0;14477:8;14463:13:::1;:23::i;:::-;:38;;;;;;::::0;-1:-1:-1;14596:12:0;14570:23:::1;:9:::0;14584:8;14570:13:::1;:23::i;:::-;:38;;;;;;14560:48;;14685:1;14675:7;:11;:26;;;;;14700:1;14690:7;:11;14675:26;14667:79;;;;-1:-1:-1::0;;;14667:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14757:31;14771:4;14778:9;14757:5;:31::i;:::-;14799:35;14813:7;14822:2;14826:7;14799:13;:35::i;:::-;14845;14859:7;14868:2;14872:7;14845:13;:35::i;:::-;14902:47;::::0;;-1:-1:-1;;;14902:47:0;;14943:4:::1;14902:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;14902:32:0;::::1;::::0;::::1;::::0;:47;;;;;::::1;::::0;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14902:47:0;14971::::1;::::0;;-1:-1:-1;;;14971:47:0;;15012:4:::1;14971:47;::::0;::::1;::::0;;;14902;;-1:-1:-1;;;;;;14971:32:0;::::1;::::0;::::1;::::0;:47;;;;;14902::::1;::::0;14971;;;;;;;;:32;:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;14971:47:0;;-1:-1:-1;15031:49:0::1;15039:8:::0;14971:47;15059:9;15070;15031:7:::1;:49::i;:::-;15095:5;15091:47;;;15129:8;::::0;15110:28:::1;::::0;-1:-1:-1;;;;;15115:8:0;;::::1;::::0;-1:-1:-1;;;15129:8:0;::::1;;15110:18;:28::i;:::-;15102:5;:36:::0;15091:47:::1;15194:38;::::0;;;;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;15194:38:0;::::1;::::0;15199:10:::1;::::0;15194:38:::1;::::0;;;;;;;;;::::1;8687:1;;;;;;;;;8710::::0;8699:8;:12;;;;13746:1494;;;:::o;899:40::-;;;;;;;;;;;;;;-1:-1:-1;;;899:40:0;;;;:::o;3054:139::-;3114:4;3131:32;3141:10;3153:2;3157:5;3131:9;:32::i;7837:46::-;7878:5;7837:46;:::o;17304:348::-;8618:8;;8630:1;8618:13;8610:43;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;;;;8675:1;8664:8;:12;17373:6:::1;::::0;17423::::1;::::0;17534:8:::1;::::0;17482:47:::1;::::0;;-1:-1:-1;;;17482:47:0;;17523:4:::1;17482:47;::::0;::::1;::::0;;;-1:-1:-1;;;;;17373:6:0;;::::1;::::0;17423;;::::1;::::0;17455:89:::1;::::0;17373:6;;17478:2;;17482:61:::1;::::0;-1:-1:-1;;;;;17534:8:0::1;::::0;17373:6;;17482:32:::1;::::0;:47;;;;;::::1;::::0;;;;;;;;;17373:6;17482:47;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17482:47:0;;:51:::1;:61::i;:::-;17455:13;:89::i;:::-;17555;17569:7;17578:2;17582:61;17634:8;;;;;;;;;-1:-1:-1::0;;;;;17634:8:0::1;-1:-1:-1::0;;;;;17582:61:0::1;17596:7;-1:-1:-1::0;;;;;17582:32:0::1;;17623:4;17582:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;17582:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;17555:89;-1:-1:-1::0;;8710:1:0;8699:8;:12;-1:-1:-1;17304:348:0:o;7987:22::-;;;-1:-1:-1;;;;;7987:22:0;;:::o;8044:21::-;;;-1:-1:-1;;;;;8044:21:0;;:::o;3510:674::-;3656:15;3644:8;:27;;3636:58;;;;;-1:-1:-1;;;3636:58:0;;;;;;;;;;;;-1:-1:-1;;;3636:58:0;;;;;;;;;;;;;;;3810:16;;-1:-1:-1;;;;;3906:13:0;;;3705:14;3906:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3855:77;;1322:66;3855:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3845:88;;;;;;-1:-1:-1;;;3746:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3722:237;;;;;;;;;3997:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3705:14;;3906:15;3997:26;;;;;-1:-1:-1;;3997:26:0;;;;;;;;;;3906:15;3997:26;;;;;;;;;;;;;;;-1:-1:-1;;3997:26:0;;-1:-1:-1;;3997:26:0;;;-1:-1:-1;;;;;;;4042:30:0;;;;;;:59;;;4096:5;-1:-1:-1;;;;;4076:25:0;:16;-1:-1:-1;;;;;4076:25:0;;4042:59;4034:100;;;;;-1:-1:-1;;;4034:100:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4145:31;4154:5;4161:7;4170:5;4145:8;:31::i;:::-;3510:674;;;;;;;;;:::o;1067:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17701:172::-;8618:8;;8630:1;8618:13;8610:43;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;-1:-1:-1;;;8610:43:0;;;;;;;;;;;;;;;8675:1;8664:8;:12;17764:6:::1;::::0;17750:46:::1;::::0;;-1:-1:-1;;;17750:46:0;;17790:4:::1;17750:46;::::0;::::1;::::0;;;17742:123:::1;::::0;-1:-1:-1;;;;;17764:6:0::1;::::0;17750:31:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;17764:6;17750:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17750:46:0;17812:6:::1;::::0;17798:46:::1;::::0;;-1:-1:-1;;;17798:46:0;;17838:4:::1;17798:46;::::0;::::1;::::0;;;-1:-1:-1;;;;;17812:6:0;;::::1;::::0;17798:31:::1;::::0;:46;;;;;17750::::1;::::0;17798;;;;;;;;17812:6;17798:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17798:46:0;17846:8:::1;::::0;-1:-1:-1;;;;;17846:8:0;;::::1;::::0;-1:-1:-1;;;17856:8:0;::::1;;17742:7;:123::i;:::-;8710:1:::0;8699:8;:12;17701:172::o;8966:287::-;7942:34;;;;;;;;;;;;;;;;;9094:43;;-1:-1:-1;;;;;9094:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9094:43:0;-1:-1:-1;;;9094:43:0;;;9083:55;;;;9048:12;;9062:17;;9083:10;;;9094:43;9083:55;;;9094:43;9083:55;;9094:43;9083:55;;;;;;;;;;-1:-1:-1;;9083:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9047:91;;;;9157:7;:57;;;;-1:-1:-1;9169:11:0;;:16;;:44;;;9200:4;9189:24;;;;;;;;;;;;;;;-1:-1:-1;9189:24:0;9169:44;9149:96;;;;;-1:-1:-1;;;9149:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8966:287;;;;;:::o;582:142::-;634:6;661;;;:30;;-1:-1:-1;;676:5:0;;;690:1;685;676:5;685:1;671:15;;;;;:20;661:30;653:63;;;;;-1:-1:-1;;;653:63:0;;;;;;;;;;;;-1:-1:-1;;;653:63:0;;;;;;;;;;;;;;445:129;529:5;;;524:16;;;;516:50;;;;;-1:-1:-1;;;516:50:0;;;;;;;;;;;;-1:-1:-1;;;516:50:0;;;;;;;;;;;;;;10082:860;-1:-1:-1;;;;;10194:23:0;;;;;:50;;-1:-1:-1;;;;;;10221:23:0;;;10194:50;10186:82;;;;;-1:-1:-1;;;10186:82:0;;;;;;;;;;;;-1:-1:-1;;;10186:82:0;;;;;;;;;;;;;;;10383:18;;10310:23;:15;:23;;;-1:-1:-1;;;10383:18:0;;;;10366:35;;;10439:15;;;;;;:33;;-1:-1:-1;;;;;;10458:14:0;;;;10439:33;:51;;;;-1:-1:-1;;;;;;10476:14:0;;;;10439:51;10435:336;;;10645:11;10592:64;;10597:44;10631:9;10597:27;10614:9;10597:16;:27::i;:::-;-1:-1:-1;;;;;10597:33:0;;;:44::i;:::-;10568:20;:88;;-1:-1:-1;;;;;10592:50:0;;;;:64;;;;10568:88;;;10695:64;;;10700:44;10734:9;10700:27;10717:9;10700:16;:27::i;:44::-;10671:20;:88;;-1:-1:-1;;;;;10695:50:0;;;;:64;;;;10671:88;;;10435:336;10781:8;:28;;-1:-1:-1;;10781:28:0;-1:-1:-1;;;;;10781:28:0;;;;;;;-1:-1:-1;;;;10820:28:0;-1:-1:-1;;;10820:28:0;;;;;;;;;-1:-1:-1;;;;;10859:35:0;-1:-1:-1;;;10859:35:0;;;;;;;;;10910:24;;;10915:8;;;10910:24;;10925:8;;;;;;;10910:24;;;;;;;;;;;;;;;;;10082:860;;;;;;:::o;2494:169::-;-1:-1:-1;;;;;2575:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2624:31;;;;;;;;;;;;;;;;;2494:169;;;:::o;2671:220::-;-1:-1:-1;;;;;2765:15:0;;;;;;:9;:15;;;;;;:26;;2785:5;2765:19;:26::i;:::-;-1:-1:-1;;;;;2747:15:0;;;;;;;:9;:15;;;;;;:44;;;;2818:13;;;;;;;:24;;2836:5;2818:17;:24::i;:::-;-1:-1:-1;;;;;2802:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;2858:25;;;;;;;2802:13;;2858:25;;;;;;;;;;;;;2671:220;;;:::o;11032:837::-;11105:10;11128:13;11162:7;;;;;;;;;-1:-1:-1;;;;;11162:7:0;-1:-1:-1;;;;;11144:32:0;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11144:34:0;11241:5;;-1:-1:-1;;;;;11197:19:0;;;;;;-1:-1:-1;11144:34:0;;-1:-1:-1;11241:5:0;11272:590;;11302:11;;11298:494;;11334:10;11347:41;11357:30;-1:-1:-1;;;;;11357:15:0;;;;:30;;:19;:30::i;11347:41::-;11334:54;;11407:14;11424:17;11434:6;11424:9;:17::i;:::-;11407:34;;11472:9;11464:5;:17;11460:317;;;11506:14;11523:37;11539:20;:5;11549:9;11539;:20::i;:::-;11523:11;;;:15;:37::i;:::-;11506:54;-1:-1:-1;11583:16:0;11602:27;11619:9;11602:12;:5;11612:1;11602:9;:12::i;:::-;:16;;:27::i;:::-;11583:46;;11652:14;11681:11;11669:9;:23;;;;;;;-1:-1:-1;11719:13:0;;11715:42;;11734:23;11740:5;11747:9;11734:5;:23::i;:::-;11460:317;;;;11298:494;;;11272:590;;;11813:11;;11809:53;;11849:1;11841:5;:9;11809:53;11032:837;;;;;;:::o;4553:303::-;4598:6;4625:1;4621;:5;4617:232;;;-1:-1:-1;4647:1:0;4680;4676;4672:5;;:9;4696:92;4707:1;4703;:5;4696:92;;;4733:1;4729:5;;4771:1;4766;4762;4758;:5;;;;;;:9;4757:15;;;;;;4753:19;;4696:92;;;4617:232;;;;4809:6;;4805:44;;-1:-1:-1;4836:1:0;4805:44;4553:303;;;:::o;2068:201::-;2141:11;;:22;;2157:5;2141:15;:22::i;:::-;2127:11;:36;;;-1:-1:-1;;;;;2190:13:0;;;;:9;:13;;;;;;:24;;2208:5;2190:17;:24::i;:::-;-1:-1:-1;;;;;2174:13:0;;;;;;:9;:13;;;;;;;;:40;;;;2230:31;;;;;;;2174:13;;;;2230:31;;;;;;;;;;2068:201;;:::o;4339:96::-;4391:6;4418:1;4414;:5;:13;;4426:1;4414:13;;;4422:1;4414:13;4410:17;4339:96;-1:-1:-1;;;4339:96:0:o;2277:209::-;-1:-1:-1;;;;;2356:15:0;;;;;;:9;:15;;;;;;:26;;2376:5;2356:19;:26::i;:::-;-1:-1:-1;;;;;2338:15:0;;;;;;:9;:15;;;;;:44;;;;2407:11;:22;;2423:5;2407:15;:22::i;:::-;2393:11;:36;;;2445:33;;;;;;;;-1:-1:-1;;;;;2445:33:0;;;;;;;;;;;;;2277:209;;:::o;5207:120::-;-1:-1:-1;;;;;5283:10:0;-1:-1:-1;;;5283:17:0;;5207:120::o;5398:108::-;5458:9;-1:-1:-1;;;;;5488:10:0;;-1:-1:-1;;;;;5484:14:0;;5488:10;5484:14;;;;;;5398:108;-1:-1:-1;;;5398:108:0:o;309:128::-;393:5;;;388:16;;;;380:49;;;;;-1:-1:-1;;;380:49:0;;;;;;;;;;;;-1:-1:-1;;;380:49:0;;;;;;;;;;;;;

Swarm Source

ipfs://a2182ae03ffdbf418baa5d0a0113190018a8f47df33fcce4fb3327214a1f241b
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.