Contract 0xF81421fc15300c5a8CCa9aFE12F5CBAd502Fa756 1

 

Contract Overview

Balance:
0 Ether

EtherValue:
$0.00

Token:
 
Txn Hash
Method
Block
From
To
Value
0x997a4422023f69be554a8af401db64787db9c85cda75bbe03242ea5a1bfde5c7Transfer153108582022-08-09 23:16:1623 hrs 49 mins ago0x3ce96360fd1898492eddf61b48c0b91b637073ea IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00472699 21.88424502
0xc01189260ee2a4b536c77de751bca89bacfdbd2c3b91ab5b10d32ccdfd20593cTransfer152761982022-08-04 13:39:046 days 9 hrs ago0x43e8cf1be6db38ddb1ea20d9397d6c4fe58b892d IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.0005369912.75
0xab862f481236ab9e0963765fed8c264ca3fdb91766dedba460c3f57d3109e521Transfer152761782022-08-04 13:35:526 days 9 hrs ago0xf5b373a0b3b362e03fdd067ac3eee8b260516ae1 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00109453 15.35389775
0x1c32aa87b76a068b4f126ff3f95f748d96091fdb197d3c94f370fd0ce26698a5Transfer152728282022-08-04 0:57:226 days 22 hrs ago0x7fc7b3e47689862d5a5382ace1d595524f9f5396 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00123585 5.72154755
0xa91e141ba73f4d8a60f1447fd888f0656098affd639bceb323e413732533c9b0Transfer152726742022-08-04 0:25:166 days 22 hrs ago0x8578ebedb49c18231ccaa41610ac5eda0a5d00ee IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.0007044410.9998855
0xd0822ed1a2f9fe3fdca998e8d36b8d9f4b167b42bac8ff7e5f051c88567ec090Transfer152726532022-08-04 0:20:096 days 22 hrs ago0x319abce341301c5b934b54b8a81293c6ab8b7579 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.0004632810.9998542
0x3110955aa78d65185fe1114a371ad35e9e1910b6222b86709e85cc77b6eb9ff9Transfer152726112022-08-04 0:11:496 days 22 hrs agoMEXC: Mexc.com IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.0010537516.45746057
0x4d0f7cbcc51543dde1767f804b88711c1df3625a2a15a4ac51074ce660e34bb3Transfer152707112022-08-03 17:10:297 days 5 hrs ago0x7fc7b3e47689862d5a5382ace1d595524f9f5396 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00066468 11.19896712
0xd48ebc42ea392fbe80980b29bfb14a8ca24310b8155c7ac4b9fc1873f097d465Transfer152706922022-08-03 17:07:347 days 5 hrs ago0x7fc7b3e47689862d5a5382ace1d595524f9f5396 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00176902 16.90819833
0x39f138110f6f2edde8d96c2f124cfe3cd0eb90ac0e6b44f0e1bf805bf2cc17e4Transfer152706352022-08-03 16:55:007 days 6 hrs ago0x7fc7b3e47689862d5a5382ace1d595524f9f5396 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00263402 12.19458311
0x252f3319f173c956dceb71fc543c00222d002e01f0e615999855c98f4e54d3eeTransfer152706072022-08-03 16:49:107 days 6 hrs ago0x7fc7b3e47689862d5a5382ace1d595524f9f5396 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00377125 17.45950523
0x631d4bda4aa3edb82f4e7283f50d729498ca6e9089fa04116ea29b086d4b827dTransfer152589142022-08-01 20:48:149 days 2 hrs ago0x3ce96360fd1898492eddf61b48c0b91b637073ea IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00243138 16.8845991
0xd44ab7b3ad9e435404f44aee9edd9f34a55e43e4b9ae76bfc7edd47b40641aacTransfer152499202022-07-31 11:17:4710 days 11 hrs ago0x44bcf1a0d0a8567285e884dcad3435bf13f9f2a5 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.000347365.86716891
0xfc12b2f966ae997f68003a63f0ebe614c7652b343395f4326e35e20442a62a4fTransfer152497932022-07-31 10:49:2810 days 12 hrs ago0x72807705c9856a0d3ddaf68be4362cca18d088ff IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.000349125.89562539
0x39d93872a56faa5e5c8c4a45023438bcf951687c2523a0d4f8e37a5e7ae690f0Transfer152491992022-07-31 8:42:3910 days 14 hrs ago0xa0e90ab664fae38970c3a34dbb84158286d725da IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00039052 6.59477293
0x9b9c35b421cfd0ff6b609d95768d47633ccbba76018e5cdfdd1587809c26938dTransfer152429782022-07-30 9:29:2211 days 13 hrs ago0x9a4c219a54f3dd1298bc2e914753807fdbf41dd3 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00032506 5.48939277
0x7af21dc982216ac4bf05c513dbf19798b717d236a1f9ae527f9da865f77f8d9fTransfer151910332022-07-22 7:31:5419 days 15 hrs ago0x81213a5b4510834b82468b68d2e1165ba5639e16 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00096507 16.29724104
0x8e518dd0bfa6d3649762125350cdd223879feb146ef6ae4f59ac9bc34e041ad7Transfer151662772022-07-18 11:12:0923 days 11 hrs ago0x3ce96360fd1898492eddf61b48c0b91b637073ea IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00159949 11.1076266
0xff7585b85b07e748f237277a6c38df2272906913be4d54d3ca9b53d3335f85baTransfer150939202022-07-07 6:54:3234 days 16 hrs ago0xdc25d6432ee66d8ca22d6849a3dc53d51636b75f IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00090153 15.22426677
0x194f5ae4946965e2b1b1bf63df003fc9b83b46d07b4051e2f7eae3d3b41c4bdbTransfer150924202022-07-07 1:13:1934 days 21 hrs ago0x93f53b4c8ed2c0cc84bde1166b290998baa0d005 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00589154 27.68479507
0x94ac22ffd340034077ad085f51a3dd79bdb0c0bdf1a4486ee73a68152ce5ac19Transfer150892722022-07-06 13:44:4035 days 9 hrs ago0xab16be0690f8797dcc49d08fdc0faaf57995bab3 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00177405 17.83682453
0x63b479fcdce7b3475a3900ba39b98663c3e69f33002db695d9720efe619a2716Transfer150863552022-07-06 2:45:0435 days 20 hrs ago0x120051a72966950b8ce12eb5496b5d1eeec1541b IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.0030849248.18008275
0x7490ee7ec10ea6299ae0e8de0682c0d00ffc7d7faa24c0891e688f6cd5f7e891Transfer150818632022-07-05 10:09:2836 days 12 hrs ago0x43e8cf1be6db38ddb1ea20d9397d6c4fe58b892d IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.0006633415.75
0x5f6a30f9075314b2d51c9738a7c007d654b245f72d96516044b2ca61399050d7Transfer150818322022-07-05 10:03:3436 days 13 hrs ago0xf5b373a0b3b362e03fdd067ac3eee8b260516ae1 IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00128723 18.05703005
0x994a2c3e4879adfc780dc55e31d9260f54de15441eefbd36e50fdc0c6809993fTransfer150690792022-07-03 10:40:1738 days 12 hrs ago0x00000055e5b1d58e45aaf1d47371c886caf2927a IN  0xf81421fc15300c5a8cca9afe12f5cbad502fa7560 Ether0.00079883 13.49
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CardioCoin

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity ^0.4.24;

/**
 * @dev SafeMath
 * Math operations with safety checks that throw on error
 * https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/math/SafeMath.sol
 */
library SafeMath {
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        assert(c / a == b);
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    function safeSub(uint256 a, uint256 b) internal pure returns (uint256) {
        if (b > a) return 0;
        return a - b;
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        assert(c >= a);
        return c;
    }
}

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

contract IERC20 is IERC165 {
    function totalSupply() public view returns (uint256);
    function balanceOf(address account) public view returns (uint256);
    function decimals() public view returns (uint8);
    function transfer(address recipient, uint256 amount) public returns (bool);
    function allowance(address owner, address spender) public view returns (uint256);
    function approve(address spender, uint256 amount) public returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool);
    function safeTransfer(address recipient, uint256 amount, bytes memory data) public;
    function safeTransfer(address recipient, uint256 amount) public;
    function safeTransferFrom(address sender, address recipient, uint256 amount, bytes memory data) public;
    function safeTransferFrom(address sender, address recipient, uint256 amount) public;

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

contract ERC165 is IERC165 {
    bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;
    mapping(bytes4 => bool) private _supportedInterfaces;

    constructor () internal {
        _registerInterface(_INTERFACE_ID_ERC165);
    }

    function supportsInterface(bytes4 interfaceId) external view returns (bool) {
        return _supportedInterfaces[interfaceId];
    }

    function _registerInterface(bytes4 interfaceId) internal {
        require(interfaceId != 0xffffffff, "ERC165: invalid interface id");
        _supportedInterfaces[interfaceId] = true;
    }
}

contract IERC20Receiver {
    function onERC20Received(address _operator, address _from, uint256 _amount, bytes memory _data) public returns (bytes4);
}
// ----------------------------------------------------------------------------
// @title Ownable
// ----------------------------------------------------------------------------
contract Ownable {
    address public owner;

    event SetOwner(address owner);
    event SetMinter(address minter);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() public {
        owner    = msg.sender;

        emit SetOwner(msg.sender);
        emit SetMinter(msg.sender);
    }

    modifier onlyOwner() { require(msg.sender == owner); _; }

    function transferOwnership(address _newOwner) external onlyOwner {
        require(_newOwner != address(0));
        emit OwnershipTransferred(owner, _newOwner);
        owner = _newOwner;
    }
}
// ----------------------------------------------------------------------------
// @title ERC20
// ----------------------------------------------------------------------------
contract ERC20 is ERC165, IERC20, Ownable {
    using SafeMath for uint256;
    
    event LockedInfo(address indexed from, address indexed to, uint256 value, uint8 tokenType, uint256 distributedTime, uint256 lockUpPeriodMonth, uint256 unlockAmountPerCount, uint256 remainUnLockCount, uint256 CONST_UNLOCKCOUNT);
    event ChangeListingTime(uint256 oldTime, uint256 newTime);
    event FinshedSetExchangeListingTime();

    struct LockInfo {
        bool isLocked;
        uint8 tokenType;
        uint256 amount;
        uint256 distributedTime;
        uint256 lockUpPeriodMonth;
        uint256 lastUnlockTimestamp;
        uint256 unlockAmountPerCount;
        uint256 remainUnLockCount;
        uint256 CONST_UNLOCKCOUNT;
        uint256 CONST_AMOUNT;
    }
    
    uint256 internal _totalSupply;
    uint8 private _decimals = 18;

    uint256 internal _tokenCreatedTime;
    
    mapping(address => uint256) internal _balances;
    mapping(address => mapping (address => uint256)) internal _allowances;

    mapping(address => uint8) internal _cardioWallet;
    mapping(address => mapping (uint8 => LockInfo)) internal _lockedInfo;

    bytes4 private constant _ERC20_RECEIVED = 0x9d188c22;
    bytes4 private constant _INTERFACE_ID_ERC20 = 0x65787371;

    constructor() public {
        _tokenCreatedTime = now;
        // Crowd Sale Wallet
        _cardioWallet[0x93f53B4C8ED2C0Cc84BdE1166B290998bAA0d005] = 1;
        // Team & Advisors
        _cardioWallet[0x0787bb893334FE0E6254a575B7D11E1009CBD2a3] = 2;
        // Ecosystem Activation
        _cardioWallet[0x3E5553619440A990f9227AB4557433e6AFCb1267] = 3;
        // Business Development
        _cardioWallet[0x0f1b039128d04891BC15137271F61c259B4f239D] = 4;
    }

    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view returns (uint256) {
        uint256 totalBalances = _balances[account];
        uint8 tokenType;

        for (tokenType = 1; tokenType <= 4; tokenType++) {
            LockInfo memory lockInfo = _lockedInfo[account][tokenType];
            totalBalances = totalBalances.add(lockInfo.amount);
        }
        
        return totalBalances;
    }

    function unLockBalanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    function lockUpInfo(address account, uint8 tokenType) public view returns (bool, uint8, uint256, uint256, uint256, uint256, uint256, uint256, uint256, uint256) {
        LockInfo memory lockInfo = _lockedInfo[account][tokenType];
        return (lockInfo.isLocked, lockInfo.tokenType, lockInfo.amount, lockInfo.distributedTime, lockInfo.lockUpPeriodMonth, lockInfo.lastUnlockTimestamp, lockInfo.unlockAmountPerCount, lockInfo.remainUnLockCount, lockInfo.CONST_UNLOCKCOUNT, lockInfo.CONST_AMOUNT);
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function transfer(address recipient, uint256 amount) public returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function increaseApproval(address spender, uint256 amount) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(amount));
        return true;
    }

    function decreaseApproval(address spender, uint256 amount) public returns (bool) {
        if (amount >= _allowances[msg.sender][spender]) {
            amount = 0;
        } else {
            amount = _allowances[msg.sender][spender].sub(amount);
        }

        _approve(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount));
        return true;
    }
    
    function safeTransfer(address recipient, uint256 amount) public {
        safeTransfer(recipient, amount, "");
    }

    function safeTransfer(address recipient, uint256 amount, bytes memory data) public {
        transfer(recipient, amount);
        require(_checkOnERC20Received(msg.sender, recipient, amount, data), "ERC20: transfer to non ERC20Receiver implementer");
    }
    
    function safeTransferFrom(address sender, address recipient, uint256 amount) public {
        safeTransferFrom(sender, recipient, amount, "");
    }

    function safeTransferFrom(address sender, address recipient, uint256 amount, bytes memory data) public {
        transferFrom(sender, recipient, amount);
        require(_checkOnERC20Received(sender, recipient, amount, data), "ERC20: transfer to non ERC20Receiver implementer");
    }

    function _approve(address owner, address spender, uint256 amount) internal {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        uint8 adminAccountType = _cardioWallet[sender];
        // Crowd Sale Wallet, Team & Advisors from admin wallet Type 1, 2
        if(adminAccountType >= 1 && adminAccountType <= 2) {
            _addLocker(sender, recipient, adminAccountType, amount);
        } else {
            // Check "From" LockUp Balance
            uint8 tokenType;
            for (tokenType = 1; tokenType <= 4; tokenType++) {
                LockInfo storage lockInfo = _lockedInfo[sender][tokenType];
                if (lockInfo.isLocked) {
                    _unLock(sender, tokenType);
                }
            }
            _balances[sender] = _balances[sender].sub(amount);
            _balances[recipient] = _balances[recipient].add(amount);
        }

        emit Transfer(sender, recipient, amount);
    }

    function _addLocker(address sender, address recipient, uint8 adminAcountType, uint256 amount) internal {
        require(_lockedInfo[recipient][adminAcountType].isLocked == false, "Already Locked User");
        
        uint256 distributedTime;
        uint256 lockUpPeriodMonth;
        uint256 unlockAmountPerCount;
        uint256 remainUnLockCount;
        uint256 CONST_UNLOCKCOUNT;
        uint256 CONST_AMOUNT;
        
        if(adminAcountType == 1) { // Crowd Sale
            distributedTime = now;
            lockUpPeriodMonth = 12;
            unlockAmountPerCount = amount.div(100);
            remainUnLockCount = 6;
            CONST_UNLOCKCOUNT = 5;
            CONST_AMOUNT = amount;
        } else { // Team & Advisors
            distributedTime = now;
            lockUpPeriodMonth = 20;
            unlockAmountPerCount = amount.div(40);
            remainUnLockCount = 40;
            CONST_UNLOCKCOUNT = 40;
            CONST_AMOUNT = amount;
        }
        
        LockInfo memory newLockInfo = LockInfo({
            isLocked: true,
            tokenType : adminAcountType,
            amount: amount,
            distributedTime: distributedTime,
            lockUpPeriodMonth: lockUpPeriodMonth,
            lastUnlockTimestamp: 0,
            unlockAmountPerCount: unlockAmountPerCount,
            remainUnLockCount: remainUnLockCount,
            CONST_UNLOCKCOUNT: CONST_UNLOCKCOUNT,
            CONST_AMOUNT: CONST_AMOUNT
        });
        
        _balances[sender] = _balances[sender].sub(amount);
        _lockedInfo[recipient][adminAcountType] = newLockInfo;
    }
    
    function _unLock(address sender, uint8 tokenType) internal {
        LockInfo storage lockInfo = _lockedInfo[sender][tokenType];

        // Only Crowd Sale Type
        // 518400 = 6 Days
        if(tokenType == 1 && lockInfo.remainUnLockCount == 6 && lockInfo.distributedTime.add(518400) <= now) {
            // lockInfo update
            lockInfo.remainUnLockCount = 5;

            // Fisrt Distribute 5%
            uint256 distributeAmount = lockInfo.unlockAmountPerCount.mul(50);
            lockInfo.amount = lockInfo.amount.sub(distributeAmount);
            _balances[sender] = _balances[sender].add(distributeAmount);
        }

        if(_isOverLockUpPeriodMonth((now.safeSub(lockInfo.distributedTime)), lockInfo.lockUpPeriodMonth) == false) {
            return;
        }

        uint256 blockTime = now;
        uint256 count = _getUnLockCount(blockTime, lockInfo);

        // None
        if(count == 0) return;
        uint256 unlockAmount;
        if(tokenType == 1) {
            unlockAmount = count.mul(lockInfo.unlockAmountPerCount.mul(10));
        } else {
            unlockAmount = count.mul(lockInfo.unlockAmountPerCount);
        }

        // Shortage due to burn token
        // or the last distribution
        uint256 remainUnLockCount = lockInfo.remainUnLockCount.safeSub(count);
        if (lockInfo.amount.safeSub(unlockAmount) == 0 || remainUnLockCount == 0) {
            unlockAmount = lockInfo.amount;
            lockInfo.isLocked = false;
        }
        
        // lockInfo update
        lockInfo.lastUnlockTimestamp = now;
        lockInfo.remainUnLockCount = remainUnLockCount;
        lockInfo.amount = lockInfo.amount.sub(unlockAmount);
        
        _balances[sender] = _balances[sender].add(unlockAmount);
    }
    
    function _getUnLockCount(uint256 curBlockTime, LockInfo lockInfo) internal pure returns (uint256) {
        // 1 Month = 30 Days 
        uint256 lockUpTime = lockInfo.lockUpPeriodMonth * 30 * 24 * 60 * 60;

        uint256 startTime = lockInfo.distributedTime.add(lockUpTime);
        uint256 count = 0;

        if (lockInfo.lastUnlockTimestamp == 0) {
            count = _convertMSToMonth(curBlockTime - startTime);
        } else {
            uint256 unLockedCount = _convertMSToMonth(curBlockTime - startTime);
            uint256 alreadyUnLockCount = lockInfo.CONST_UNLOCKCOUNT - lockInfo.remainUnLockCount;
            
            count = unLockedCount.safeSub(alreadyUnLockCount);
        }
        return count;
    }
    
    function _isOverLockUpPeriodMonth(uint256 time, uint256 period) internal pure returns (bool) {
        return _convertMSToMonth(time) > period;
    }
    
    function _convertMSToMonth(uint256 time) internal pure returns (uint256) {
        return time.div(60).div(60).div(24).div(30);
    }

    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function _checkOnERC20Received(address sender, address recipient, uint256 amount, bytes memory _data) internal returns (bool) {
        if (!isContract(recipient)) {
            return true;
        }
        bytes4 retval = IERC20Receiver(recipient).onERC20Received(msg.sender, sender, amount, _data);
        return (retval == _ERC20_RECEIVED);
    }
}
// ----------------------------------------------------------------------------
// @title Burnable Token
// @dev Token that can be irreversibly burned (destroyed).
// ----------------------------------------------------------------------------
contract BurnableToken is ERC20 {
    event BurnAdminAmount(address indexed burner, uint256 value);
    event BurnLockedToken(address indexed burner, uint256 value, uint8 tokenType);

    function burnAdminAmount(uint256 _value) onlyOwner public {
        require(_value <= _balances[msg.sender]);

        _balances[msg.sender] = _balances[msg.sender].sub(_value);
        _totalSupply = _totalSupply.sub(_value);
    
        emit BurnAdminAmount(msg.sender, _value);
        emit Transfer(msg.sender, address(0), _value);
    }
}
// ----------------------------------------------------------------------------
// @title Mintable token
// @dev Simple ERC20 Token example, with mintable token creation
// Based on code by TokenMarketNet: https://github.com/TokenMarketNet/ico/blob/master/contracts/MintableToken.sol
// ----------------------------------------------------------------------------
contract MintableToken is ERC20 {
    event Mint(address indexed to, uint256 amount);
    event MintFinished();

    uint256 ECOSYSTEM_AMOUNT = 5400000000 * (10**18);
    uint256 BUSINESSDEVELOPMENT_AMOUNT = 3000000000 * (10**18);
    bool private _mintingFinished = false;

    modifier canMint() { require(!_mintingFinished); _; }

    function mintingFinished() public view returns (bool) {
        return _mintingFinished;
    }

    // Token Type - 1 : Crowd Sale
    // Token Type - 2 : Team & Advisors
    // Token Type - 3 : Ecosystem Activation
    // Token Type - 4 : Business Development
    function mint(address _to, uint256 _amount, uint8 _tokenType) onlyOwner canMint public returns (bool) {
        require(_tokenType < 5, "Token Type NULL");
        _totalSupply = _totalSupply.add(_amount);

        uint256 lockUpPeriodMonth;
        uint256 unlockAmountPerCount;
        uint256 remainUnLockCount;
        uint256 CONST_UNLOCKCOUNT;
        uint256 CONST_AMOUNT;

        // Ecosystem Activation
        if(_tokenType == 3) {
            lockUpPeriodMonth = 12;
            unlockAmountPerCount = ECOSYSTEM_AMOUNT.div(50);
            remainUnLockCount = 50;
            CONST_UNLOCKCOUNT = 50;
            CONST_AMOUNT = ECOSYSTEM_AMOUNT;
            
            LockInfo memory newLockInfoEA = LockInfo({
                isLocked: true,
                tokenType : _tokenType,
                amount: _amount,
                distributedTime: _tokenCreatedTime,
                lockUpPeriodMonth: lockUpPeriodMonth,
                lastUnlockTimestamp: 0,
                unlockAmountPerCount: unlockAmountPerCount,
                remainUnLockCount: remainUnLockCount,
                CONST_UNLOCKCOUNT: CONST_UNLOCKCOUNT,
                CONST_AMOUNT: CONST_AMOUNT
            });
            
            _lockedInfo[_to][_tokenType] = newLockInfoEA;
            
            emit LockedInfo(address(0), _to, _amount, _tokenType, _tokenCreatedTime, lockUpPeriodMonth, unlockAmountPerCount, remainUnLockCount, CONST_UNLOCKCOUNT);
        } else if(_tokenType == 4) {
            // Business Development
            lockUpPeriodMonth = 24;
            unlockAmountPerCount = BUSINESSDEVELOPMENT_AMOUNT.div(40);
            remainUnLockCount = 36;
            CONST_UNLOCKCOUNT = 36;
            CONST_AMOUNT = BUSINESSDEVELOPMENT_AMOUNT;
            
            LockInfo memory newLockInfoBD = LockInfo({
                isLocked: true,
                tokenType : _tokenType,
                amount: _amount,
                distributedTime: _tokenCreatedTime,
                lockUpPeriodMonth: lockUpPeriodMonth,
                lastUnlockTimestamp: 0,
                unlockAmountPerCount: unlockAmountPerCount,
                remainUnLockCount: remainUnLockCount,
                CONST_UNLOCKCOUNT: CONST_UNLOCKCOUNT,
                CONST_AMOUNT: CONST_AMOUNT
            });
            
            _lockedInfo[_to][_tokenType] = newLockInfoBD;
            
            emit LockedInfo(address(0), _to, _amount, _tokenType, _tokenCreatedTime, lockUpPeriodMonth, unlockAmountPerCount, remainUnLockCount, CONST_UNLOCKCOUNT);
        } else {
            _balances[_to] = _balances[_to].add(_amount);
        }

        emit Mint(_to, _amount);
        emit Transfer(address(0), _to, _amount);

        return true;
    }

    function finishMinting() onlyOwner canMint public returns (bool) {
        _mintingFinished = true;
        emit MintFinished();
        return true;
    }
}
// ----------------------------------------------------------------------------
// @Project CardioCoin
// ----------------------------------------------------------------------------
contract CardioCoin is MintableToken, BurnableToken {
    event SetTokenInfo(string name, string symbol);
    string private _name = "";
    string private _symbol = "";

    constructor() public {
        _name = "CardioCoin";
        _symbol = "CRDC";

        emit SetTokenInfo(_name, _symbol);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mintingFinished","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"unLockBalanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"},{"name":"tokenType","type":"uint8"}],"name":"lockUpInfo","outputs":[{"name":"","type":"bool"},{"name":"","type":"uint8"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"safeTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_tokenType","type":"uint8"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burnAdminAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"finishMinting","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"safeTransfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"name","type":"string"},{"indexed":false,"name":"symbol","type":"string"}],"name":"SetTokenInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"BurnAdminAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"tokenType","type":"uint8"}],"name":"BurnLockedToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[],"name":"MintFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"tokenType","type":"uint8"},{"indexed":false,"name":"distributedTime","type":"uint256"},{"indexed":false,"name":"lockUpPeriodMonth","type":"uint256"},{"indexed":false,"name":"unlockAmountPerCount","type":"uint256"},{"indexed":false,"name":"remainUnLockCount","type":"uint256"},{"indexed":false,"name":"CONST_UNLOCKCOUNT","type":"uint256"}],"name":"LockedInfo","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"oldTime","type":"uint256"},{"indexed":false,"name":"newTime","type":"uint256"}],"name":"ChangeListingTime","type":"event"},{"anonymous":false,"inputs":[],"name":"FinshedSetExchangeListingTime","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"}],"name":"SetOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"minter","type":"address"}],"name":"SetMinter","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040526012600360006101000a81548160ff021916908360ff1602179055506b1172c67a9232b47c180000006009556b09b18ab5df7180b6b8000000600a556000600b60006101000a81548160ff0219169083151502179055506020604051908101604052806000815250600c908051906020019062000083929190620006d0565b506020604051908101604052806000815250600d9080519060200190620000ac929190620006d0565b50348015620000ba57600080fd5b50620000f86301ffc9a77c010000000000000000000000000000000000000000000000000000000002620005a9640100000000026401000000009004565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb533604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17fcec52196e972044edde8689a1b608e459c5946b7f3e5c8cd3d6d8e126d422e1c33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a1426004819055506001600760007393f53b4c8ed2c0cc84bde1166b290998baa0d00573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600260076000730787bb893334fe0e6254a575b7d11e1009cbd2a373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600360076000733e5553619440a990f9227ab4557433e6afcb126773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff160217905550600460076000730f1b039128d04891bc15137271f61c259b4f239d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506040805190810160405280600a81526020017f43617264696f436f696e00000000000000000000000000000000000000000000815250600c908051906020019062000407929190620006d0565b506040805190810160405280600481526020017f4352444300000000000000000000000000000000000000000000000000000000815250600d908051906020019062000455929190620006d0565b507f9a6645cd07452c704655abb8d3df1bb29cc145ac1bdd0cb6370469cf6bbc9a29600c600d6040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156200050c5780601f10620004e0576101008083540402835291602001916200050c565b820191906000526020600020905b815481529060010190602001808311620004ee57829003601f168201915b5050838103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015620005935780601f10620005675761010080835404028352916020019162000593565b820191906000526020600020905b8154815290600101906020018083116200057557829003601f168201915b505094505050505060405180910390a16200077f565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415151562000664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200071357805160ff191683800117855562000744565b8280016001018555821562000744579182015b828111156200074357825182559160200191906001019062000726565b5b50905062000753919062000757565b5090565b6200077c91905b80821115620007785760008160009055506001016200075e565b5090565b90565b6131e0806200078f6000396000f30060806040526004361061013e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461014357806305d2035b146101a757806306fdde03146101d6578063095ea7b3146102665780630b5cc187146102cb5780631764aeca1461032257806318160ddd146103cf57806323b872dd146103fa578063313ce5671461047f578063423f6cef146104b057806342842e0e146104fd5780636112e8ac1461056a57806366188463146105dc57806370a082311461064157806376227f3b146106985780637d64bcb4146106c55780638da5cb5b146106f457806395d89b411461074b578063a9059cbb146107db578063b88d4fde14610840578063d73dd623146108f3578063dd62ed3e14610958578063eb795549146109cf578063f2fde38b14610a62575b600080fd5b34801561014f57600080fd5b5061018d60048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610aa5565b604051808215151515815260200191505060405180910390f35b3480156101b357600080fd5b506101bc610b0c565b604051808215151515815260200191505060405180910390f35b3480156101e257600080fd5b506101eb610b23565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022b578082015181840152602081019050610210565b50505050905090810190601f1680156102585780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027257600080fd5b506102b1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bc5565b604051808215151515815260200191505060405180910390f35b3480156102d757600080fd5b5061030c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bdc565b6040518082815260200191505060405180910390f35b34801561032e57600080fd5b50610370600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c25565b604051808b1515151581526020018a60ff1660ff1681526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b3480156103db57600080fd5b506103e4610d81565b6040518082815260200191505060405180910390f35b34801561040657600080fd5b50610465600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d8b565b604051808215151515815260200191505060405180910390f35b34801561048b57600080fd5b50610494610e3c565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104bc57600080fd5b506104fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e53565b005b34801561050957600080fd5b50610568600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e72565b005b34801561057657600080fd5b506105c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff169060200190929190505050610e93565b604051808215151515815260200191505060405180910390f35b3480156105e857600080fd5b50610627600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611545565b604051808215151515815260200191505060405180910390f35b34801561064d57600080fd5b50610682600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061167c565b6040518082815260200191505060405180910390f35b3480156106a457600080fd5b506106c3600480360381019080803590602001909291905050506117fb565b005b3480156106d157600080fd5b506106da611a0c565b604051808215151515815260200191505060405180910390f35b34801561070057600080fd5b50610709611ad4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561075757600080fd5b50610760611afa565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107a0578082015181840152602081019050610785565b50505050905090810190601f1680156107cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107e757600080fd5b50610826600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611b9c565b604051808215151515815260200191505060405180910390f35b34801561084c57600080fd5b506108f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611bb3565b005b3480156108ff57600080fd5b5061093e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611c6b565b604051808215151515815260200191505060405180910390f35b34801561096457600080fd5b506109b9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d10565b6040518082815260200191505060405180910390f35b3480156109db57600080fd5b50610a60600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d97565b005b348015610a6e57600080fd5b50610aa3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e4d565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600b60009054906101000a900460ff16905090565b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bbb5780601f10610b9057610100808354040283529160200191610bbb565b820191906000526020600020905b815481529060010190602001808311610b9e57829003601f168201915b5050505050905090565b6000610bd2338484611fa5565b6001905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600080600080600080600080610c3c61315b565b600860008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d60ff1660ff16815260200190815260200160002061014060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050806000015181602001518260400151836060015184608001518560a001518660c001518760e001518861010001518961012001519a509a509a509a509a509a509a509a509a509a50509295989b9194979a5092959850565b6000600254905090565b6000610d98848484612226565b610e318433610e2c85600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b611fa5565b600190509392505050565b6000600360009054906101000a900460ff16905090565b610e6e82826020604051908101604052806000815250611d97565b5050565b610e8e8383836020604051908101604052806000815250611bb3565b505050565b600080600080600080610ea461315b565b610eac61315b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f0857600080fd5b600b60009054906101000a900460ff16151515610f2457600080fd5b60058960ff16101515610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e2054797065204e554c4c000000000000000000000000000000000081525060200191505060405180910390fd5b610fb48a60025461268790919063ffffffff16565b60028190555060038960ff1614156111d157600c9650610fe060326009546126a590919063ffffffff16565b955060329450603293506009549250610140604051908101604052806001151581526020018a60ff1681526020018b815260200160045481526020018881526020016000815260200187815260200186815260200185815260200184815250915081600860008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b60ff1660ff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155610100820151816007015561012082015181600801559050508a73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fd607f1bc6687c8d81b74e1e08dbd849544430b1ca26bd921193112d2e1f3dead8c8c6004548c8c8c8c604051808881526020018760ff1660ff16815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390a361147f565b60048960ff1614156113e857601896506111f76028600a546126a590919063ffffffff16565b95506024945060249350600a549250610140604051908101604052806001151581526020018a60ff1681526020018b815260200160045481526020018881526020016000815260200187815260200186815260200185815260200184815250905080600860008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b60ff1660ff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155610100820151816007015561012082015181600801559050508a73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fd607f1bc6687c8d81b74e1e08dbd849544430b1ca26bd921193112d2e1f3dead8c8c6004548c8c8c8c604051808881526020018760ff1660ff16815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390a361147e565b61143a8a600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268790919063ffffffff16565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b8a73ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858b6040518082815260200191505060405180910390a28a73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c6040518082815260200191505060405180910390a360019750505050505050509392505050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821015156115d55760009150611667565b61166482600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b91505b611672338484611fa5565b6001905092915050565b600080600061168961315b565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250600191505b60048260ff161115156117f057600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002061014060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090506117e181604001518461268790919063ffffffff16565b925081806001019250506116d0565b829350505050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561185757600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205481111515156118a557600080fd5b6118f781600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061194f8160025461266e90919063ffffffff16565b6002819055503373ffffffffffffffffffffffffffffffffffffffff167fa0f3dea10c8bf26d7f1b6b0cf33166195f48616c562c681b49eaaa2423894d00826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a6a57600080fd5b600b60009054906101000a900460ff16151515611a8657600080fd5b6001600b60006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600d8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611b925780601f10611b6757610100808354040283529160200191611b92565b820191906000526020600020905b815481529060010190602001808311611b7557829003601f168201915b5050505050905090565b6000611ba9338484612226565b6001905092915050565b611bbe848484610d8b565b50611bcb848484846126bb565b1515611c65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f45524332303a207472616e7366657220746f206e6f6e2045524332305265636581526020017f6976657220696d706c656d656e7465720000000000000000000000000000000081525060400191505060405180910390fd5b50505050565b6000611d063384611d0185600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268790919063ffffffff16565b611fa5565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611da18383611b9c565b50611dae338484846126bb565b1515611e48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f45524332303a207472616e7366657220746f206e6f6e2045524332305265636581526020017f6976657220696d706c656d656e7465720000000000000000000000000000000081525060400191505060405180910390fd5b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ea957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611ee557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515612070576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415151561213b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20617070726f766520746f20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515156122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f45524332303a207472616e736665722066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141515156123c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16925060018360ff1610158015612427575060028360ff1611155b1561243d57612438868685876128c7565b612601565b600191505b60048260ff161115156124d657600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002090508060000160009054906101000a900460ff16156124c9576124c88683612bfb565b5b8180600101925050612442565b61252884600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125bd84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268790919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3505050505050565b600082821115151561267c57fe5b818303905092915050565b600080828401905083811015151561269b57fe5b8091505092915050565b600081838115156126b257fe5b04905092915050565b6000806126c785612fed565b15156126d657600191506128be565b8473ffffffffffffffffffffffffffffffffffffffff16634fc35859338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156127cb5780820151818401526020810190506127b0565b50505050905090810190601f1680156127f85780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561281a57600080fd5b505af115801561282e573d6000803e3d6000fd5b505050506040513d602081101561284457600080fd5b81019080805190602001909291905050509050639d188c227c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b6000806000806000806128d861315b565b60001515600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b60ff1660ff16815260200190815260200160002060000160009054906101000a900460ff1615151415156129ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c7265616479204c6f636b656420557365720000000000000000000000000081525060200191505060405180910390fd5b60018960ff1614156129f357429650600c95506129e16064896126a590919063ffffffff16565b94506006935060059250879150612a1c565b42965060149550612a0e6028896126a590919063ffffffff16565b945060289350602892508791505b610140604051908101604052806001151581526020018a60ff16815260200189815260200188815260200187815260200160008152602001868152602001858152602001848152602001838152509050612abe88600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461266e90919063ffffffff16565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b60ff1660ff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155610100820151816007015561012082015181600801559050505050505050505050505050565b600080600080600080600860008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860ff1660ff168152602001908152602001600020955060018760ff16148015612c73575060068660060154145b8015612c98575042612c956207e900886002015461268790919063ffffffff16565b11155b15612d765760058660060181905550612cbf6032876005015461300090919063ffffffff16565b9450612cd885876001015461266e90919063ffffffff16565b8660010181905550612d3285600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268790919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60001515612d9e612d9488600201544261303b90919063ffffffff16565b886003015461305a565b15151415612dab57612fe3565b429350612e4d848761014060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505061306f565b92506000831415612e5d57612fe3565b60018760ff161415612e9a57612e93612e84600a886005015461300090919063ffffffff16565b8461300090919063ffffffff16565b9150612eb4565b612eb186600501548461300090919063ffffffff16565b91505b612ecb83876006015461303b90919063ffffffff16565b90506000612ee683886001015461303b90919063ffffffff16565b1480612ef25750600081145b15612f1c578560010154915060008660000160006101000a81548160ff0219169083151502179055505b428660040181905550808660060181905550612f4582876001015461266e90919063ffffffff16565b8660010181905550612f9f82600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461268790919063ffffffff16565b600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050505050505050565b600080823b905060008111915050919050565b60008060008414156130155760009150613034565b828402905082848281151561302657fe5b0414151561303057fe5b8091505b5092915050565b60008282111561304e5760009050613054565b81830390505b92915050565b60008161306684613105565b11905092915050565b600080600080600080603c806018601e8a608001510202020294506130a185886060015161268790919063ffffffff16565b93506000925060008760a0015114156130c6576130bf848903613105565b92506130f7565b6130d1848903613105565b91508660e001518761010001510390506130f4818361303b90919063ffffffff16565b92505b829550505050505092915050565b6000613154601e6131466018613138603c61312a603c896126a590919063ffffffff16565b6126a590919063ffffffff16565b6126a590919063ffffffff16565b6126a590919063ffffffff16565b9050919050565b61014060405190810160405280600015158152602001600060ff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a72305820f7e6dc60e25984e7f8f42bd2d93882ac43fb9f3ad13dfe966d1d71cfd701fccc0029

Deployed ByteCode Sourcemap

20560:502:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2427:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2427:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17114:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17114:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20881:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20881:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;20881:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7245:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7245:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6211:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6211:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6335:505;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6335:505:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5699:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5699:91:0;;;;;;;;;;;;;;;;;;;;;;;7958:256;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7958:256:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6848:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6848:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;8226:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8226:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8623:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8623:150:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17387:2815;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17387:2815:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7608:342;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7608:342:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5798:405;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5798:405:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16042:350;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16042:350:0;;;;;;;;;;;;;;;;;;;;;;;;;;20210:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20210:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3131:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3131:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;20972:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20972:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;20972:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6939:156;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6939:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8781:287;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8781:287:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7403:197;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7403:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7103:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7103:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8352:259;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8352:259:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3535:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3535:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2427:135;2497:4;2521:20;:33;2542:11;2521:33;;;;;;;;;;;;;;;;;;;;;;;;;;;2514:40;;2427:135;;;:::o;17114:96::-;17162:4;17186:16;;;;;;;;;;;17179:23;;17114:96;:::o;20881:83::-;20918:6;20951:5;20944:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20881:83;:::o;7245:150::-;7311:4;7328:37;7337:10;7349:7;7358:6;7328:8;:37::i;:::-;7383:4;7376:11;;7245:150;;;;:::o;6211:116::-;6274:7;6301:9;:18;6311:7;6301:18;;;;;;;;;;;;;;;;6294:25;;6211:116;;;:::o;6335:505::-;6410:4;6416:5;6423:7;6432;6441;6450;6459;6468;6477;6486;6506:24;;:::i;:::-;6533:11;:20;6545:7;6533:20;;;;;;;;;;;;;;;:31;6554:9;6533:31;;;;;;;;;;;;;;;6506:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6583:8;:17;;;6602:8;:18;;;6622:8;:15;;;6639:8;:24;;;6665:8;:26;;;6693:8;:28;;;6723:8;:29;;;6754:8;:26;;;6782:8;:26;;;6810:8;:21;;;6575:257;;;;;;;;;;;;;;;;;;;;6335:505;;;;;;;;;;;;;;:::o;5699:91::-;5743:7;5770:12;;5763:19;;5699:91;:::o;7958:256::-;8047:4;8064:36;8074:6;8082:9;8093:6;8064:9;:36::i;:::-;8111:73;8120:6;8128:10;8140:43;8176:6;8140:11;:19;8152:6;8140:19;;;;;;;;;;;;;;;:31;8160:10;8140:31;;;;;;;;;;;;;;;;:35;;:43;;;;:::i;:::-;8111:8;:73::i;:::-;8202:4;8195:11;;7958:256;;;;;:::o;6848:83::-;6889:5;6914:9;;;;;;;;;;;6907:16;;6848:83;:::o;8226:118::-;8301:35;8314:9;8325:6;8301:35;;;;;;;;;;;;;:12;:35::i;:::-;8226:118;;:::o;8623:150::-;8718:47;8735:6;8743:9;8754:6;8718:47;;;;;;;;;;;;;:16;:47::i;:::-;8623:150;;;:::o;17387:2815::-;17483:4;17606:25;17642:28;17681:25;17717;17753:20;18087:29;;:::i;:::-;19213;;:::i;:::-;3515:5;;;;;;;;;;;3501:19;;:10;:19;;;3493:28;;;;;;;;17083:16;;;;;;;;;;;17082:17;17074:26;;;;;;;;17521:1;17508:10;:14;;;17500:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17568:25;17585:7;17568:12;;:16;;:25;;;;:::i;:::-;17553:12;:40;;;;17836:1;17822:10;:15;;;17819:2266;;;17874:2;17854:22;;17914:24;17935:2;17914:16;;:20;;:24;;;;:::i;:::-;17891:47;;17973:2;17953:22;;18010:2;17990:22;;18042:16;;18027:31;;18119:498;;;;;;;;;18157:4;18119:498;;;;;;18192:10;18119:498;;;;;;18229:7;18119:498;;;;18272:17;;18119:498;;;;18327:17;18119:498;;;;18384:1;18119:498;;;;18426:20;18119:498;;;;18484:17;18119:498;;;;18539:17;18119:498;;;;18589:12;18119:498;;;18087:530;;18677:13;18646:11;:16;18658:3;18646:16;;;;;;;;;;;;;;;:28;18663:10;18646:28;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18747:3;18724:146;;18743:1;18724:146;;;18752:7;18761:10;18773:17;;18792;18811:20;18833:17;18852;18724:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17819:2266;;;18905:1;18891:10;:15;;;18888:1197;;;18980:2;18960:22;;19020:34;19051:2;19020:26;;:30;;:34;;;;:::i;:::-;18997:57;;19089:2;19069:22;;19126:2;19106:22;;19158:26;;19143:41;;19245:498;;;;;;;;;19283:4;19245:498;;;;;;19318:10;19245:498;;;;;;19355:7;19245:498;;;;19398:17;;19245:498;;;;19453:17;19245:498;;;;19510:1;19245:498;;;;19552:20;19245:498;;;;19610:17;19245:498;;;;19665:17;19245:498;;;;19715:12;19245:498;;;19213:530;;19803:13;19772:11;:16;19784:3;19772:16;;;;;;;;;;;;;;;:28;19789:10;19772:28;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19873:3;19850:146;;19869:1;19850:146;;;19878:7;19887:10;19899:17;;19918;19937:20;19959:17;19978;19850:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18888:1197;;;20046:27;20065:7;20046:9;:14;20056:3;20046:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;20029:9;:14;20039:3;20029:14;;;;;;;;;;;;;;;:44;;;;18888:1197;17819:2266;20107:3;20102:18;;;20112:7;20102:18;;;;;;;;;;;;;;;;;;20157:3;20136:34;;20153:1;20136:34;;;20162:7;20136:34;;;;;;;;;;;;;;;;;;20190:4;20183:11;;17387:2815;;;;;;;;;;;;:::o;7608:342::-;7683:4;7714:11;:23;7726:10;7714:23;;;;;;;;;;;;;;;:32;7738:7;7714:32;;;;;;;;;;;;;;;;7704:6;:42;;7700:171;;;7772:1;7763:10;;7700:171;;;7815:44;7852:6;7815:11;:23;7827:10;7815:23;;;;;;;;;;;;;;;:32;7839:7;7815:32;;;;;;;;;;;;;;;;:36;;:44;;;;:::i;:::-;7806:53;;7700:171;7883:37;7892:10;7904:7;7913:6;7883:8;:37::i;:::-;7938:4;7931:11;;7608:342;;;;:::o;5798:405::-;5855:7;5875:21;5928:15;6020:24;;:::i;:::-;5899:9;:18;5909:7;5899:18;;;;;;;;;;;;;;;;5875:42;;5973:1;5961:13;;5956:199;5989:1;5976:9;:14;;;;5956:199;;;6047:11;:20;6059:7;6047:20;;;;;;;;;;;;;;;:31;6068:9;6047:31;;;;;;;;;;;;;;;6020:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6109:34;6127:8;:15;;;6109:13;:17;;:34;;;;:::i;:::-;6093:50;;5992:11;;;;;;;5956:199;;;6182:13;6175:20;;5798:405;;;;;;:::o;16042:350::-;3515:5;;;;;;;;;;;3501:19;;:10;:19;;;3493:28;;;;;;;;16129:9;:21;16139:10;16129:21;;;;;;;;;;;;;;;;16119:6;:31;;16111:40;;;;;;;;16188:33;16214:6;16188:9;:21;16198:10;16188:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;16164:9;:21;16174:10;16164:21;;;;;;;;;;;;;;;:57;;;;16247:24;16264:6;16247:12;;:16;;:24;;;;:::i;:::-;16232:12;:39;;;;16309:10;16293:35;;;16321:6;16293:35;;;;;;;;;;;;;;;;;;16373:1;16344:40;;16353:10;16344:40;;;16377:6;16344:40;;;;;;;;;;;;;;;;;;16042:350;:::o;20210:159::-;20269:4;3515:5;;;;;;;;;;;3501:19;;:10;:19;;;3493:28;;;;;;;;17083:16;;;;;;;;;;;17082:17;17074:26;;;;;;;;20305:4;20286:16;;:23;;;;;;;;;;;;;;;;;;20325:14;;;;;;;;;;20357:4;20350:11;;20210:159;:::o;3131:20::-;;;;;;;;;;;;;:::o;20972:87::-;21011:6;21044:7;21037:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20972:87;:::o;6939:156::-;7008:4;7025:40;7035:10;7047:9;7058:6;7025:9;:40::i;:::-;7083:4;7076:11;;6939:156;;;;:::o;8781:287::-;8895:39;8908:6;8916:9;8927:6;8895:12;:39::i;:::-;;8953:54;8975:6;8983:9;8994:6;9002:4;8953:21;:54::i;:::-;8945:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8781:287;;;;:::o;7403:197::-;7478:4;7495:75;7504:10;7516:7;7525:44;7562:6;7525:11;:23;7537:10;7525:23;;;;;;;;;;;;;;;:32;7549:7;7525:32;;;;;;;;;;;;;;;;:36;;:44;;;;:::i;:::-;7495:8;:75::i;:::-;7588:4;7581:11;;7403:197;;;;:::o;7103:134::-;7175:7;7202:11;:18;7214:5;7202:18;;;;;;;;;;;;;;;:27;7221:7;7202:27;;;;;;;;;;;;;;;;7195:34;;7103:134;;;;:::o;8352:259::-;8446:27;8455:9;8466:6;8446:8;:27::i;:::-;;8492:58;8514:10;8526:9;8537:6;8545:4;8492:21;:58::i;:::-;8484:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8352:259;;;:::o;3535:198::-;3515:5;;;;;;;;;;;3501:19;;:10;:19;;;3493:28;;;;;;;;3640:1;3619:23;;:9;:23;;;;3611:32;;;;;;;;3687:9;3659:38;;3680:5;;;;;;;;;;;3659:38;;;;;;;;;;;;3716:9;3708:5;;:17;;;;;;;;;;;;;;;;;;3535:198;:::o;9076:338::-;9187:1;9170:19;;:5;:19;;;;9162:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9268:1;9249:21;;:7;:21;;;;9241:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9352:6;9322:11;:18;9334:5;9322:18;;;;;;;;;;;;;;;:27;9341:7;9322:27;;;;;;;;;;;;;;;:36;;;;9390:7;9374:32;;9383:5;9374:32;;;9399:6;9374:32;;;;;;;;;;;;;;;;;;9076:338;;;:::o;9422:1072::-;9677:22;10007:15;10105:25;9538:1;9520:20;;:6;:20;;;;9512:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9622:1;9601:23;;:9;:23;;;;9593:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9702:13;:21;9716:6;9702:21;;;;;;;;;;;;;;;;;;;;;;;;;9677:46;;9832:1;9812:16;:21;;;;:46;;;;;9857:1;9837:16;:21;;;;9812:46;9809:625;;;9875:55;9886:6;9894:9;9905:16;9923:6;9875:10;:55::i;:::-;9809:625;;;10054:1;10042:13;;10037:252;10070:1;10057:9;:14;;;;10037:252;;;10133:11;:19;10145:6;10133:19;;;;;;;;;;;;;;;:30;10153:9;10133:30;;;;;;;;;;;;;;;10105:58;;10186:8;:17;;;;;;;;;;;;10182:92;;;10228:26;10236:6;10244:9;10228:7;:26::i;:::-;10182:92;10073:11;;;;;;;10037:252;;;10323:29;10345:6;10323:9;:17;10333:6;10323:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;10303:9;:17;10313:6;10303:17;;;;;;;;;;;;;;;:49;;;;10390:32;10415:6;10390:9;:20;10400:9;10390:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10367:9;:20;10377:9;10367:20;;;;;;;;;;;;;;;:55;;;;9809:625;10468:9;10451:35;;10460:6;10451:35;;;10479:6;10451:35;;;;;;;;;;;;;;;;;;9422:1072;;;;;;:::o;555:123::-;613:7;645:1;640;:6;;633:14;;;;;;669:1;665;:5;658:12;;555:123;;;;:::o;826:147::-;884:7;904:9;920:1;916;:5;904:17;;944:1;939;:6;;932:14;;;;;;964:1;957:8;;826:147;;;;;:::o;449:98::-;507:7;538:1;534;:5;;;;;;;;527:12;;449:98;;;;:::o;15239:358::-;15359:4;15452:13;15381:21;15392:9;15381:10;:21::i;:::-;15380:22;15376:66;;;15426:4;15419:11;;;;15376:66;15483:9;15468:41;;;15510:10;15522:6;15530;15538:5;15468:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;15468:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15468:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;15468:76:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15468:76:0;;;;;;;;;;;;;;;;15452:92;;5134:10;15573:15;;15563:25;;;:6;:25;;;;15555:34;;15239:358;;;;;;;;:::o;10502:1651::-;10726:23;10760:25;10796:28;10835:25;10871;10907:20;11525:27;;:::i;:::-;10676:5;10624:57;;:11;:22;10636:9;10624:22;;;;;;;;;;;;;;;:39;10647:15;10624:39;;;;;;;;;;;;;;;:48;;;;;;;;;;;;:57;;;10616:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10970:1;10951:15;:20;;;10948:557;;;11020:3;11002:21;;11058:2;11038:22;;11098:15;11109:3;11098:6;:10;;:15;;;;:::i;:::-;11075:38;;11148:1;11128:21;;11184:1;11164:21;;11215:6;11200:21;;10948:557;;;11291:3;11273:21;;11329:2;11309:22;;11369:14;11380:2;11369:6;:10;;:14;;;;:::i;:::-;11346:37;;11418:2;11398:22;;11455:2;11435:22;;11487:6;11472:21;;10948:557;11555:456;;;;;;;;;11589:4;11555:456;;;;;;11620:15;11555:456;;;;;;11658:6;11555:456;;;;11696:15;11555:456;;;;11745:17;11555:456;;;;11798:1;11555:456;;;;11836:20;11555:456;;;;11890:17;11555:456;;;;11941:17;11555:456;;;;11987:12;11555:456;;;11525:486;;12052:29;12074:6;12052:9;:17;12062:6;12052:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12032:9;:17;12042:6;12032:17;;;;;;;;;;;;;;;:49;;;;12134:11;12092;:22;12104:9;12092:22;;;;;;;;;;;;;;;:39;12115:15;12092:39;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10502:1651;;;;;;;;;;;:::o;12165:1817::-;12235:25;12598:24;12982:17;13016:13;13130:20;13446:25;12263:11;:19;12275:6;12263:19;;;;;;;;;;;;;;;:30;12283:9;12263:30;;;;;;;;;;;;;;;12235:58;;12383:1;12370:9;:14;;;:49;;;;;12418:1;12388:8;:26;;;:31;12370:49;:96;;;;;12463:3;12423:36;12452:6;12423:8;:24;;;:28;;:36;;;;:::i;:::-;:43;;12370:96;12367:451;;;12544:1;12515:8;:26;;:30;;;;12625:37;12659:2;12625:8;:29;;;:33;;:37;;;;:::i;:::-;12598:64;;12695:37;12715:16;12695:8;:15;;;:19;;:37;;;;:::i;:::-;12677:8;:15;;:55;;;;12767:39;12789:16;12767:9;:17;12777:6;12767:17;;;;;;;;;;;;;;;;:21;;:39;;;;:::i;:::-;12747:9;:17;12757:6;12747:17;;;;;;;;;;;;;;;:59;;;;12367:451;12930:5;12833:102;;:93;12859:37;12871:8;:24;;;12859:3;:11;;:37;;;;:::i;:::-;12899:8;:26;;;12833:24;:93::i;:::-;:102;;;12830:140;;;12952:7;;12830:140;13002:3;12982:23;;13032:36;13048:9;13059:8;13032:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:36::i;:::-;13016:52;;13110:1;13101:5;:10;13098:22;;;13113:7;;13098:22;13177:1;13164:9;:14;;;13161:197;;;13210:48;13220:37;13254:2;13220:8;:29;;;:33;;:37;;;;:::i;:::-;13210:5;:9;;:48;;;;:::i;:::-;13195:63;;13161:197;;;13306:40;13316:8;:29;;;13306:5;:9;;:40;;;;:::i;:::-;13291:55;;13161:197;13474:41;13509:5;13474:8;:26;;;:34;;:41;;;;:::i;:::-;13446:69;;13571:1;13530:37;13554:12;13530:8;:15;;;:23;;:37;;;;:::i;:::-;:42;:68;;;;13597:1;13576:17;:22;13530:68;13526:171;;;13630:8;:15;;;13615:30;;13680:5;13660:8;:17;;;:25;;;;;;;;;;;;;;;;;;13526:171;13776:3;13745:8;:28;;:34;;;;13819:17;13790:8;:26;;:46;;;;13865:33;13885:12;13865:8;:15;;;:19;;:33;;;;:::i;:::-;13847:8;:15;;:51;;;;13939:35;13961:12;13939:9;:17;13949:6;13939:17;;;;;;;;;;;;;;;;:21;;:35;;;;:::i;:::-;13919:9;:17;13929:6;13919:17;;;;;;;;;;;;;;;:55;;;;12165:1817;;;;;;;;;:::o;15057:174::-;15117:4;15134:12;15188:7;15176:20;15168:28;;15222:1;15215:4;:8;15208:15;;15057:174;;;;:::o;233:208::-;291:7;368:9;320:1;315;:6;311:47;;;345:1;338:8;;;;311:47;384:1;380;:5;368:17;;412:1;407;403;:5;;;;;;;;:10;396:18;;;;;;432:1;425:8;;233:208;;;;;;:::o;686:132::-;748:7;776:1;772;:5;768:19;;;786:1;779:8;;;;768:19;809:1;805;:5;798:12;;686:132;;;;;:::o;14751:151::-;14838:4;14888:6;14862:23;14880:4;14862:17;:23::i;:::-;:32;14855:39;;14751:151;;;;:::o;13994:745::-;14083:7;14134:18;14214:17;14285:13;14453:21;14535:26;14199:2;14194;14189;14184;14155:8;:26;;;:31;:36;:41;:46;14134:67;;14234:40;14263:10;14234:8;:24;;;:28;;:40;;;;:::i;:::-;14214:60;;14301:1;14285:17;;14351:1;14319:8;:28;;;:33;14315:394;;;14377:43;14410:9;14395:12;:24;14377:17;:43::i;:::-;14369:51;;14315:394;;;14477:43;14510:9;14495:12;:24;14477:17;:43::i;:::-;14453:67;;14593:8;:26;;;14564:8;:26;;;:55;14535:84;;14656:41;14678:18;14656:13;:21;;:41;;;;:::i;:::-;14648:49;;14315:394;14726:5;14719:12;;13994:745;;;;;;;;;:::o;14914:135::-;14978:7;15005:36;15038:2;15005:28;15030:2;15005:20;15022:2;15005:12;15014:2;15005:4;:8;;:12;;;;:::i;:::-;:16;;:20;;;;:::i;:::-;:24;;:28;;;;:::i;:::-;:32;;:36;;;;:::i;:::-;14998:43;;14914:135;;;:::o;20560:502::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://f7e6dc60e25984e7f8f42bd2d93882ac43fb9f3ad13dfe966d1d71cfd701fccc
Block Transaction Difficulty Gas Used Reward
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.

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