ETH Price: $2,075.76 (+8.90%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer146538302022-04-25 12:32:581402 days ago1650889978IN
CardioHealthCare: CRDC Token
0 ETH0.0039734930.76292886
Transfer146253712022-04-21 1:13:201407 days ago1650503600IN
CardioHealthCare: CRDC Token
0 ETH0.002515753.62029329
Transfer146200362022-04-20 5:34:211407 days ago1650432861IN
CardioHealthCare: CRDC Token
0 ETH0.0052666147.44570726
Transfer146153072022-04-19 11:40:071408 days ago1650368407IN
CardioHealthCare: CRDC Token
0 ETH0.0054329342.11149264
Transfer146151552022-04-19 11:04:591408 days ago1650366299IN
CardioHealthCare: CRDC Token
0 ETH0.0070076254.31212604
Transfer146090852022-04-18 12:07:201409 days ago1650283640IN
CardioHealthCare: CRDC Token
0 ETH0.0037619229.12492215
Transfer143884002022-03-15 2:03:121444 days ago1647309792IN
CardioHealthCare: CRDC Token
0 ETH0.0063015529.61120153
Transfer143882452022-03-15 1:26:311444 days ago1647307591IN
CardioHealthCare: CRDC Token
0 ETH0.008693140.85606678
Transfer138135852021-12-16 2:43:111533 days ago1639622591IN
CardioHealthCare: CRDC Token
0 ETH0.0187352988.04263066
Transfer138099132021-12-15 13:08:071533 days ago1639573687IN
CardioHealthCare: CRDC Token
0 ETH0.0084189439.56530484
Transfer138098982021-12-15 13:06:401533 days ago1639573600IN
CardioHealthCare: CRDC Token
0 ETH0.0111370752.33634997
Transfer138098922021-12-15 13:05:271533 days ago1639573527IN
CardioHealthCare: CRDC Token
0 ETH0.0111569352.42972188
Transfer138098922021-12-15 13:05:271533 days ago1639573527IN
CardioHealthCare: CRDC Token
0 ETH0.0111569352.42972188
Transfer138098922021-12-15 13:05:271533 days ago1639573527IN
CardioHealthCare: CRDC Token
0 ETH0.011130252.30410098
Transfer138098902021-12-15 13:05:051533 days ago1639573505IN
CardioHealthCare: CRDC Token
0 ETH0.010524649.4581878
Transfer138098902021-12-15 13:05:051533 days ago1639573505IN
CardioHealthCare: CRDC Token
0 ETH0.010524649.4581878
Transfer138098822021-12-15 13:02:331533 days ago1639573353IN
CardioHealthCare: CRDC Token
0 ETH0.0093283743.83675081
Transfer138098782021-12-15 13:01:461533 days ago1639573306IN
CardioHealthCare: CRDC Token
0 ETH0.0105436649.54774083
Transfer138098772021-12-15 13:01:401533 days ago1639573300IN
CardioHealthCare: CRDC Token
0 ETH0.0094096244.2185598
Transfer138098772021-12-15 13:01:401533 days ago1639573300IN
CardioHealthCare: CRDC Token
0 ETH0.0094096244.2185598
Transfer138098502021-12-15 12:56:391533 days ago1639572999IN
CardioHealthCare: CRDC Token
0 ETH0.0122959957.78246488
Transfer138098482021-12-15 12:55:431533 days ago1639572943IN
CardioHealthCare: CRDC Token
0 ETH0.0106159649.8875454
Transfer138098422021-12-15 12:54:021533 days ago1639572842IN
CardioHealthCare: CRDC Token
0 ETH0.0090548742.55149577
Transfer138098362021-12-15 12:52:461533 days ago1639572766IN
CardioHealthCare: CRDC Token
0 ETH0.00883341.50888599
Transfer138077632021-12-15 5:08:161533 days ago1639544896IN
CardioHealthCare: CRDC Token
0 ETH0.0159590974.99643545
View all transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
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
/**
 *Submitted for verification at Etherscan.io on 2021-09-08
*/

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[0x9FC9675d6d1d2E583EbC6fdF7b30F1d1144523Cd] = 1;
        // Team & Advisors
        _cardioWallet[0xe39c6A20A55e6f88aF1B331F0E8529dcD4A02c10] = 2;
        // Ecosystem Activation
        _cardioWallet[0x588eaB2Fd73e381efFA8E4F084bF5a686eC9eD68] = 3;
        // Business Development
        _cardioWallet[0x461030be06272623f7135ba9926Ea9Afba00d8E3] = 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 = 0;
            unlockAmountPerCount = amount.div(100);
            remainUnLockCount = 6;
            CONST_UNLOCKCOUNT = 5;
            CONST_AMOUNT = amount;
        } else { // Team & Advisors
            distributedTime = now;
            lockUpPeriodMonth = 6;
            unlockAmountPerCount = amount.div(20);
            remainUnLockCount = 20;
            CONST_UNLOCKCOUNT = 20;
            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
        // 864000 = 10 Days
        if(tokenType == 1 && lockInfo.remainUnLockCount == 6 && lockInfo.distributedTime.add(864000) <= now) {
            // lockInfo update
            lockInfo.distributedTime = lockInfo.distributedTime.add(864000);
            lockInfo.remainUnLockCount = 5;

            // Fisrt Distribute 5%
            uint256 distributeAmount = lockInfo.unlockAmountPerCount.mul(5);
            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) {
            uint256 remainCount = lockInfo.remainUnLockCount;
            for(uint8 i = 0; i < count; i++) {
                if(remainCount == 5) {
                    remainCount = remainCount - 1;
                    unlockAmount = unlockAmount.add(lockInfo.unlockAmountPerCount.mul(10)); 
                    continue;
                }

                if(remainCount >= 2 && remainCount <= 4) {
                    remainCount = remainCount - 1;
                    unlockAmount = unlockAmount.add(lockInfo.unlockAmountPerCount.mul(20)); 
                    continue;
                }

                if(remainCount == 1) {
                    remainCount = remainCount - 1;
                    unlockAmount = unlockAmount.add(lockInfo.unlockAmountPerCount.mul(25)); 
                    continue;
                }
            }
        } 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);

    modifier onlyCardioWallet() {
      require(msg.sender == 0x588eaB2Fd73e381efFA8E4F084bF5a686eC9eD68
      || msg.sender == 0x461030be06272623f7135ba9926Ea9Afba00d8E3
    ); _; }

    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);
    }

    // Ecosystem Activation - 3
    // 0x588eaB2Fd73e381efFA8E4F084bF5a686eC9eD68
    // Business Development - 4
    // 0x461030be06272623f7135ba9926Ea9Afba00d8E3
    function burnTypeToken(uint256 _value) onlyCardioWallet public {
        uint8 adminAccountType = _cardioWallet[msg.sender];
        LockInfo storage lockInfo = _lockedInfo[msg.sender][adminAccountType];

        lockInfo.amount = lockInfo.amount.sub(_value);
        _totalSupply = _totalSupply.sub(_value);

        if(lockInfo.amount == 0) {
            lockInfo.isLocked = false;
        }
    
        emit BurnLockedToken(msg.sender, _value, adminAccountType);
        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 = 7300000000 * (10**18);
    uint256 BUSINESS_AMOUNT = 1150000000 * (10**18);

    bool private _mintingFinished = false;

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

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

    function mint(address _to, uint256 _amount, uint8 _tokenType) onlyOwner canMint public returns (bool) {
        require(_tokenType < 5, "Token Type NULL");
        _totalSupply = _totalSupply.add(_amount);

        if(_tokenType >= 3) {
            uint256 lockUpPeriodMonth;
            uint256 unlockAmountPerCount;
            uint256 remainUnLockCount;
            uint256 CONST_UNLOCKCOUNT;
            uint256 CONST_AMOUNT;
            
            if(_tokenType == 3) { // Ecosystem Activation
                lockUpPeriodMonth = 0;
                unlockAmountPerCount = ECOSYSTEM_AMOUNT.div(100);
                remainUnLockCount = 99;
                CONST_UNLOCKCOUNT = 99;
                CONST_AMOUNT = ECOSYSTEM_AMOUNT;
            } else if(_tokenType == 4) { // Business Development
                lockUpPeriodMonth = 0;
                unlockAmountPerCount = BUSINESS_AMOUNT.div(100);
                remainUnLockCount = 85;
                CONST_UNLOCKCOUNT = 85;
                CONST_AMOUNT = BUSINESS_AMOUNT;
            }
            
            LockInfo memory newLockInfo = 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] = newLockInfo;
            
            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

API
[{"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":"_value","type":"uint256"}],"name":"burnTypeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","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"}]

60806040526012600360006101000a81548160ff021916908360ff1602179055506b17966b20f50ba823040000006009556b03b741f8eafc93793e000000600a556000600b60006101000a81548160ff0219169083151502179055506020604051908101604052806000815250600c908051906020019062000083929190620006d0565b506020604051908101604052806000815250600d9080519060200190620000ac929190620006d0565b50348015620000ba57600080fd5b50620000f86301ffc9a77c010000000000000000000000000000000000000000000000000000000002620005a9640100000000026401000000009004565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f167d3e9c1016ab80e58802ca9da10ce5c6a0f4debc46a2e7a2cd9e56899a4fb533604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a17fcec52196e972044edde8689a1b608e459c5946b7f3e5c8cd3d6d8e126d422e1c33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a142600481905550600160076000739fc9675d6d1d2e583ebc6fdf7b30f1d1144523cd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060026007600073e39c6a20a55e6f88af1b331f0e8529dcd4a02c1073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060036007600073588eab2fd73e381effa8e4f084bf5a686ec9ed6873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff16021790555060046007600073461030be06272623f7135ba9926ea9afba00d8e373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908360ff1602179055506040805190810160405280600a81526020017f43617264696f436f696e00000000000000000000000000000000000000000000815250600c908051906020019062000407929190620006d0565b506040805190810160405280600481526020017f4352444300000000000000000000000000000000000000000000000000000000815250600d908051906020019062000455929190620006d0565b507f9a6645cd07452c704655abb8d3df1bb29cc145ac1bdd0cb6370469cf6bbc9a29600c600d6040518080602001806020018381038352858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156200050c5780601f10620004e0576101008083540402835291602001916200050c565b820191906000526020600020905b815481529060010190602001808311620004ee57829003601f168201915b5050838103825284818154600181600116156101000203166002900481526020019150805460018160011615610100020316600290048015620005935780601f10620005675761010080835404028352916020019162000593565b820191906000526020600020905b8154815290600101906020018083116200057557829003601f168201915b505094505050505060405180910390a16200077f565b63ffffffff7c010000000000000000000000000000000000000000000000000000000002817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415151562000664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4552433136353a20696e76616c696420696e746572666163652069640000000081525060200191505060405180910390fd5b6001600080837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200071357805160ff191683800117855562000744565b8280016001018555821562000744579182015b828111156200074357825182559160200191906001019062000726565b5b50905062000753919062000757565b5090565b6200077c91905b80821115620007785760008160009055506001016200075e565b5090565b90565b61339c806200078f6000396000f300608060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461014e57806305d2035b146101b257806306fdde03146101e1578063095ea7b3146102715780630b5cc187146102d65780631764aeca1461032d57806318160ddd146103da57806323b872dd14610405578063313ce5671461048a578063423f6cef146104bb57806342842e0e146105085780636112e8ac1461057557806366188463146105e757806370a082311461064c57806376227f3b146106a35780637d64bcb4146106d05780638da5cb5b146106ff57806395d89b4114610756578063a9059cbb146107e6578063b88d4fde1461084b578063d73dd623146108fe578063dd62ed3e14610963578063e5230492146109da578063eb79554914610a07578063f2fde38b14610a9a575b600080fd5b34801561015a57600080fd5b5061019860048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610add565b604051808215151515815260200191505060405180910390f35b3480156101be57600080fd5b506101c7610b44565b604051808215151515815260200191505060405180910390f35b3480156101ed57600080fd5b506101f6610b5b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023657808201518184015260208101905061021b565b50505050905090810190601f1680156102635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027d57600080fd5b506102bc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfd565b604051808215151515815260200191505060405180910390f35b3480156102e257600080fd5b50610317600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c14565b6040518082815260200191505060405180910390f35b34801561033957600080fd5b5061037b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c5d565b604051808b1515151581526020018a60ff1660ff1681526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b3480156103e657600080fd5b506103ef610db9565b6040518082815260200191505060405180910390f35b34801561041157600080fd5b50610470600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dc3565b604051808215151515815260200191505060405180910390f35b34801561049657600080fd5b5061049f610e74565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104c757600080fd5b50610506600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e8b565b005b34801561051457600080fd5b50610573600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eaa565b005b34801561058157600080fd5b506105cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff169060200190929190505050610ecb565b604051808215151515815260200191505060405180910390f35b3480156105f357600080fd5b50610632600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113a5565b604051808215151515815260200191505060405180910390f35b34801561065857600080fd5b5061068d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114dc565b6040518082815260200191505060405180910390f35b3480156106af57600080fd5b506106ce6004803603810190808035906020019092919050505061165b565b005b3480156106dc57600080fd5b506106e561186c565b604051808215151515815260200191505060405180910390f35b34801561070b57600080fd5b50610714611934565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076257600080fd5b5061076b61195a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ab578082015181840152602081019050610790565b50505050905090810190601f1680156107d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107f257600080fd5b50610831600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119fc565b604051808215151515815260200191505060405180910390f35b34801561085757600080fd5b506108fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a13565b005b34801561090a57600080fd5b50610949600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611acb565b604051808215151515815260200191505060405180910390f35b34801561096f57600080fd5b506109c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b70565b6040518082815260200191505060405180910390f35b3480156109e657600080fd5b50610a0560048036038101908080359060200190929190505050611bf7565b005b348015610a1357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611e65565b005b348015610aa657600080fd5b50610adb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f1b565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600b60009054906101000a900460ff16905090565b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bf35780601f10610bc857610100808354040283529160200191610bf3565b820191906000526020600020905b815481529060010190602001808311610bd657829003601f168201915b5050505050905090565b6000610c0a338484612073565b6001905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600080600080600080600080610c74613317565b600860008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d60ff1660ff16815260200190815260200160002061014060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050806000015181602001518260400151836060015184608001518560a001518660c001518760e001518861010001518961012001519a509a509a509a509a509a509a509a509a509a50509295989b9194979a5092959850565b6000600254905090565b6000610dd08484846122f4565b610e698433610e6485600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b612073565b600190509392505050565b6000600360009054906101000a900460ff16905090565b610ea682826020604051908101604052806000815250611e65565b5050565b610ec68383836020604051908101604052806000815250611a13565b505050565b600080600080600080610edc613317565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f3857600080fd5b600b60009054906101000a900460ff16151515610f5457600080fd5b60058860ff16101515610fcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e2054797065204e554c4c000000000000000000000000000000000081525060200191505060405180910390fd5b610fe48960025461275590919063ffffffff16565b60028190555060038860ff1610151561124a5760038860ff161415611031576000955061101d606460095461277390919063ffffffff16565b945060639350606392506009549150611068565b60048860ff16141561106757600095506110576064600a5461277390919063ffffffff16565b94506055935060559250600a5491505b5b610140604051908101604052806001151581526020018960ff1681526020018a815260200160045481526020018781526020016000815260200186815260200185815260200184815260200183815250905080600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a60ff1660ff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155610100820151816007015561012082015181600801559050508973ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fd607f1bc6687c8d81b74e1e08dbd849544430b1ca26bd921193112d2e1f3dead8b8b6004548b8b8b8b604051808881526020018760ff1660ff16815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390a36112e0565b61129c89600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8973ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858a6040518082815260200191505060405180910390a28973ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b6040518082815260200191505060405180910390a3600196505050505050509392505050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210151561143557600091506114c7565b6114c482600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b91505b6114d2338484612073565b6001905092915050565b60008060006114e9613317565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250600191505b60048260ff1611151561165057600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002061014060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481525050905061164181604001518461275590919063ffffffff16565b92508180600101925050611530565b829350505050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116b757600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561170557600080fd5b61175781600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117af8160025461273c90919063ffffffff16565b6002819055503373ffffffffffffffffffffffffffffffffffffffff167fa0f3dea10c8bf26d7f1b6b0cf33166195f48616c562c681b49eaaa2423894d00826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118ca57600080fd5b600b60009054906101000a900460ff161515156118e657600080fd5b6001600b60006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119f25780601f106119c7576101008083540402835291602001916119f2565b820191906000526020600020905b8154815290600101906020018083116119d557829003601f168201915b5050505050905090565b6000611a093384846122f4565b6001905092915050565b611a1e848484610dc3565b50611a2b84848484612789565b1515611ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f45524332303a207472616e7366657220746f206e6f6e2045524332305265636581526020017f6976657220696d706c656d656e7465720000000000000000000000000000000081525060400191505060405180910390fd5b50505050565b6000611b663384611b6185600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b612073565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008073588eab2fd73e381effa8e4f084bf5a686ec9ed6873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c87575073461030be06272623f7135ba9926ea9afba00d8e373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c9257600080fd5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169150600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360ff1660ff1681526020019081526020016000209050611d5083826001015461273c90919063ffffffff16565b8160010181905550611d6d8360025461273c90919063ffffffff16565b600281905550600081600101541415611d9e5760008160000160006101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f0f479e9cf02078816287022c7af2a876f12cedc867c479edbb08e5a57d4565558484604051808381526020018260ff1660ff1681526020019250505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b611e6f83836119fc565b50611e7c33848484612789565b1515611f16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f45524332303a207472616e7366657220746f206e6f6e2045524332305265636581526020017f6976657220696d706c656d656e7465720000000000000000000000000000000081525060400191505060405180910390fd5b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611fb357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561213e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20617070726f766520746f20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515156123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f45524332303a207472616e736665722066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561248e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16925060018360ff16101580156124f5575060028360ff1611155b1561250b5761250686868587612995565b6126cf565b600191505b60048260ff161115156125a457600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002090508060000160009054906101000a900460ff1615612597576125968683612cc9565b5b8180600101925050612510565b6125f684600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061268b84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3505050505050565b600082821115151561274a57fe5b818303905092915050565b600080828401905083811015151561276957fe5b8091505092915050565b6000818381151561278057fe5b04905092915050565b600080612795856131a9565b15156127a4576001915061298c565b8473ffffffffffffffffffffffffffffffffffffffff16634fc35859338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561289957808201518184015260208101905061287e565b50505050905090810190601f1680156128c65780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156128e857600080fd5b505af11580156128fc573d6000803e3d6000fd5b505050506040513d602081101561291257600080fd5b81019080805190602001909291905050509050639d188c227c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b6000806000806000806129a6613317565b60001515600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b60ff1660ff16815260200190815260200160002060000160009054906101000a900460ff161515141515612a88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c7265616479204c6f636b656420557365720000000000000000000000000081525060200191505060405180910390fd5b60018960ff161415612ac15742965060009550612aaf60648961277390919063ffffffff16565b94506006935060059250879150612aea565b42965060069550612adc60148961277390919063ffffffff16565b945060149350601492508791505b610140604051908101604052806001151581526020018a60ff16815260200189815260200188815260200187815260200160008152602001868152602001858152602001848152602001838152509050612b8c88600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b60ff1660ff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155610100820151816007015561012082015181600801559050505050505050505050505050565b600080600080600080600080600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a60ff1660ff168152602001908152602001600020975060018960ff16148015612d44575060068860060154145b8015612d69575042612d66620d2f008a6002015461275590919063ffffffff16565b11155b15612e6957612d88620d2f00896002015461275590919063ffffffff16565b886002018190555060058860060181905550612db2600589600501546131bc90919063ffffffff16565b9650612dcb87896001015461273c90919063ffffffff16565b8860010181905550612e2587600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60001515612e91612e878a60020154426131f790919063ffffffff16565b8a60030154613216565b15151415612e9e5761319d565b429550612f40868961014060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505061322b565b94506000851415612f505761319d565b60018960ff1614156130545787600601549250600091505b848260ff16101561304f576005831415612fb357600183039250612fac612f9d600a8a600501546131bc90919063ffffffff16565b8561275590919063ffffffff16565b9350613042565b60028310158015612fc5575060048311155b1561300157600183039250612ffa612feb60148a600501546131bc90919063ffffffff16565b8561275590919063ffffffff16565b9350613042565b60018314156130415760018303925061303a61302b60198a600501546131bc90919063ffffffff16565b8561275590919063ffffffff16565b9350613042565b5b8180600101925050612f68565b61306e565b61306b8860050154866131bc90919063ffffffff16565b93505b6130858589600601546131f790919063ffffffff16565b905060006130a0858a600101546131f790919063ffffffff16565b14806130ac5750600081145b156130d6578760010154935060008860000160006101000a81548160ff0219169083151502179055505b4288600401819055508088600601819055506130ff84896001015461273c90919063ffffffff16565b886001018190555061315984600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050505050505050565b600080823b905060008111915050919050565b60008060008414156131d157600091506131f0565b82840290508284828115156131e257fe5b041415156131ec57fe5b8091505b5092915050565b60008282111561320a5760009050613210565b81830390505b92915050565b600081613222846132c1565b11905092915050565b600080600080600080603c806018601e8a6080015102020202945061325d85886060015161275590919063ffffffff16565b93506000925060008760a0015114156132825761327b8489036132c1565b92506132b3565b61328d8489036132c1565b91508660e001518761010001510390506132b081836131f790919063ffffffff16565b92505b829550505050505092915050565b6000613310601e61330260186132f4603c6132e6603c8961277390919063ffffffff16565b61277390919063ffffffff16565b61277390919063ffffffff16565b61277390919063ffffffff16565b9050919050565b61014060405190810160405280600015158152602001600060ff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a7230582024fb9ce1cb2ee0851c285b637255da6109ef1fbff91d4e5c7464efa2c30e67820029

Deployed Bytecode

0x608060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a71461014e57806305d2035b146101b257806306fdde03146101e1578063095ea7b3146102715780630b5cc187146102d65780631764aeca1461032d57806318160ddd146103da57806323b872dd14610405578063313ce5671461048a578063423f6cef146104bb57806342842e0e146105085780636112e8ac1461057557806366188463146105e757806370a082311461064c57806376227f3b146106a35780637d64bcb4146106d05780638da5cb5b146106ff57806395d89b4114610756578063a9059cbb146107e6578063b88d4fde1461084b578063d73dd623146108fe578063dd62ed3e14610963578063e5230492146109da578063eb79554914610a07578063f2fde38b14610a9a575b600080fd5b34801561015a57600080fd5b5061019860048036038101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610add565b604051808215151515815260200191505060405180910390f35b3480156101be57600080fd5b506101c7610b44565b604051808215151515815260200191505060405180910390f35b3480156101ed57600080fd5b506101f6610b5b565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023657808201518184015260208101905061021b565b50505050905090810190601f1680156102635780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027d57600080fd5b506102bc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfd565b604051808215151515815260200191505060405180910390f35b3480156102e257600080fd5b50610317600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c14565b6040518082815260200191505060405180910390f35b34801561033957600080fd5b5061037b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c5d565b604051808b1515151581526020018a60ff1660ff1681526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019a505050505050505050505060405180910390f35b3480156103e657600080fd5b506103ef610db9565b6040518082815260200191505060405180910390f35b34801561041157600080fd5b50610470600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dc3565b604051808215151515815260200191505060405180910390f35b34801561049657600080fd5b5061049f610e74565b604051808260ff1660ff16815260200191505060405180910390f35b3480156104c757600080fd5b50610506600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610e8b565b005b34801561051457600080fd5b50610573600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610eaa565b005b34801561058157600080fd5b506105cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803560ff169060200190929190505050610ecb565b604051808215151515815260200191505060405180910390f35b3480156105f357600080fd5b50610632600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506113a5565b604051808215151515815260200191505060405180910390f35b34801561065857600080fd5b5061068d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114dc565b6040518082815260200191505060405180910390f35b3480156106af57600080fd5b506106ce6004803603810190808035906020019092919050505061165b565b005b3480156106dc57600080fd5b506106e561186c565b604051808215151515815260200191505060405180910390f35b34801561070b57600080fd5b50610714611934565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076257600080fd5b5061076b61195a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ab578082015181840152602081019050610790565b50505050905090810190601f1680156107d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156107f257600080fd5b50610831600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119fc565b604051808215151515815260200191505060405180910390f35b34801561085757600080fd5b506108fc600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a13565b005b34801561090a57600080fd5b50610949600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611acb565b604051808215151515815260200191505060405180910390f35b34801561096f57600080fd5b506109c4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b70565b6040518082815260200191505060405180910390f35b3480156109e657600080fd5b50610a0560048036038101908080359060200190929190505050611bf7565b005b348015610a1357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611e65565b005b348015610aa657600080fd5b50610adb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f1b565b005b6000806000837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190815260200160002060009054906101000a900460ff169050919050565b6000600b60009054906101000a900460ff16905090565b6060600c8054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bf35780601f10610bc857610100808354040283529160200191610bf3565b820191906000526020600020905b815481529060010190602001808311610bd657829003601f168201915b5050505050905090565b6000610c0a338484612073565b6001905092915050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080600080600080600080600080610c74613317565b600860008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008d60ff1660ff16815260200190815260200160002061014060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff168152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050806000015181602001518260400151836060015184608001518560a001518660c001518760e001518861010001518961012001519a509a509a509a509a509a509a509a509a509a50509295989b9194979a5092959850565b6000600254905090565b6000610dd08484846122f4565b610e698433610e6485600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b612073565b600190509392505050565b6000600360009054906101000a900460ff16905090565b610ea682826020604051908101604052806000815250611e65565b5050565b610ec68383836020604051908101604052806000815250611a13565b505050565b600080600080600080610edc613317565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f3857600080fd5b600b60009054906101000a900460ff16151515610f5457600080fd5b60058860ff16101515610fcf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f546f6b656e2054797065204e554c4c000000000000000000000000000000000081525060200191505060405180910390fd5b610fe48960025461275590919063ffffffff16565b60028190555060038860ff1610151561124a5760038860ff161415611031576000955061101d606460095461277390919063ffffffff16565b945060639350606392506009549150611068565b60048860ff16141561106757600095506110576064600a5461277390919063ffffffff16565b94506055935060559250600a5491505b5b610140604051908101604052806001151581526020018960ff1681526020018a815260200160045481526020018781526020016000815260200186815260200185815260200184815260200183815250905080600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a60ff1660ff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155610100820151816007015561012082015181600801559050508973ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fd607f1bc6687c8d81b74e1e08dbd849544430b1ca26bd921193112d2e1f3dead8b8b6004548b8b8b8b604051808881526020018760ff1660ff16815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390a36112e0565b61129c89600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8973ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858a6040518082815260200191505060405180910390a28973ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8b6040518082815260200191505060405180910390a3600196505050505050509392505050565b6000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210151561143557600091506114c7565b6114c482600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b91505b6114d2338484612073565b6001905092915050565b60008060006114e9613317565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549250600191505b60048260ff1611151561165057600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002061014060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152602001600882015481525050905061164181604001518461275590919063ffffffff16565b92508180600101925050611530565b829350505050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116b757600080fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054811115151561170557600080fd5b61175781600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506117af8160025461273c90919063ffffffff16565b6002819055503373ffffffffffffffffffffffffffffffffffffffff167fa0f3dea10c8bf26d7f1b6b0cf33166195f48616c562c681b49eaaa2423894d00826040518082815260200191505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a350565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118ca57600080fd5b600b60009054906101000a900460ff161515156118e657600080fd5b6001600b60006101000a81548160ff0219169083151502179055507fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0860405160405180910390a16001905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600d8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119f25780601f106119c7576101008083540402835291602001916119f2565b820191906000526020600020905b8154815290600101906020018083116119d557829003601f168201915b5050505050905090565b6000611a093384846122f4565b6001905092915050565b611a1e848484610dc3565b50611a2b84848484612789565b1515611ac5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f45524332303a207472616e7366657220746f206e6f6e2045524332305265636581526020017f6976657220696d706c656d656e7465720000000000000000000000000000000081525060400191505060405180910390fd5b50505050565b6000611b663384611b6185600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b612073565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008073588eab2fd73e381effa8e4f084bf5a686ec9ed6873ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611c87575073461030be06272623f7135ba9926ea9afba00d8e373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b1515611c9257600080fd5b600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169150600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360ff1660ff1681526020019081526020016000209050611d5083826001015461273c90919063ffffffff16565b8160010181905550611d6d8360025461273c90919063ffffffff16565b600281905550600081600101541415611d9e5760008160000160006101000a81548160ff0219169083151502179055505b3373ffffffffffffffffffffffffffffffffffffffff167f0f479e9cf02078816287022c7af2a876f12cedc867c479edbb08e5a57d4565558484604051808381526020018260ff1660ff1681526020019250505060405180910390a2600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050565b611e6f83836119fc565b50611e7c33848484612789565b1515611f16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f45524332303a207472616e7366657220746f206e6f6e2045524332305265636581526020017f6976657220696d706c656d656e7465720000000000000000000000000000000081525060400191505060405180910390fd5b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611f7757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611fb357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561213e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f45524332303a20617070726f76652066726f6d20746865207a65726f2061646481526020017f726573730000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151515612209576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f45524332303a20617070726f766520746f20746865207a65726f20616464726581526020017f737300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b60008060008073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141515156123c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f45524332303a207472616e736665722066726f6d20746865207a65726f20616481526020017f647265737300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415151561248e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f45524332303a207472616e7366657220746f20746865207a65726f206164647281526020017f657373000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16925060018360ff16101580156124f5575060028360ff1611155b1561250b5761250686868587612995565b6126cf565b600191505b60048260ff161115156125a457600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002090508060000160009054906101000a900460ff1615612597576125968683612cc9565b5b8180600101925050612510565b6125f684600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061268b84600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a3505050505050565b600082821115151561274a57fe5b818303905092915050565b600080828401905083811015151561276957fe5b8091505092915050565b6000818381151561278057fe5b04905092915050565b600080612795856131a9565b15156127a4576001915061298c565b8473ffffffffffffffffffffffffffffffffffffffff16634fc35859338887876040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561289957808201518184015260208101905061287e565b50505050905090810190601f1680156128c65780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156128e857600080fd5b505af11580156128fc573d6000803e3d6000fd5b505050506040513d602081101561291257600080fd5b81019080805190602001909291905050509050639d188c227c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505b50949350505050565b6000806000806000806129a6613317565b60001515600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b60ff1660ff16815260200190815260200160002060000160009054906101000a900460ff161515141515612a88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f416c7265616479204c6f636b656420557365720000000000000000000000000081525060200191505060405180910390fd5b60018960ff161415612ac15742965060009550612aaf60648961277390919063ffffffff16565b94506006935060059250879150612aea565b42965060069550612adc60148961277390919063ffffffff16565b945060149350601492508791505b610140604051908101604052806001151581526020018a60ff16815260200189815260200188815260200187815260200160008152602001868152602001858152602001848152602001838152509050612b8c88600560008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273c90919063ffffffff16565b600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600860008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b60ff1660ff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a0820151816004015560c0820151816005015560e08201518160060155610100820151816007015561012082015181600801559050505050505050505050505050565b600080600080600080600080600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a60ff1660ff168152602001908152602001600020975060018960ff16148015612d44575060068860060154145b8015612d69575042612d66620d2f008a6002015461275590919063ffffffff16565b11155b15612e6957612d88620d2f00896002015461275590919063ffffffff16565b886002018190555060058860060181905550612db2600589600501546131bc90919063ffffffff16565b9650612dcb87896001015461273c90919063ffffffff16565b8860010181905550612e2587600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60001515612e91612e878a60020154426131f790919063ffffffff16565b8a60030154613216565b15151415612e9e5761319d565b429550612f40868961014060405190810160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660ff1660ff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505061322b565b94506000851415612f505761319d565b60018960ff1614156130545787600601549250600091505b848260ff16101561304f576005831415612fb357600183039250612fac612f9d600a8a600501546131bc90919063ffffffff16565b8561275590919063ffffffff16565b9350613042565b60028310158015612fc5575060048311155b1561300157600183039250612ffa612feb60148a600501546131bc90919063ffffffff16565b8561275590919063ffffffff16565b9350613042565b60018314156130415760018303925061303a61302b60198a600501546131bc90919063ffffffff16565b8561275590919063ffffffff16565b9350613042565b5b8180600101925050612f68565b61306e565b61306b8860050154866131bc90919063ffffffff16565b93505b6130858589600601546131f790919063ffffffff16565b905060006130a0858a600101546131f790919063ffffffff16565b14806130ac5750600081145b156130d6578760010154935060008860000160006101000a81548160ff0219169083151502179055505b4288600401819055508088600601819055506130ff84896001015461273c90919063ffffffff16565b886001018190555061315984600560008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461275590919063ffffffff16565b600560008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b50505050505050505050565b600080823b905060008111915050919050565b60008060008414156131d157600091506131f0565b82840290508284828115156131e257fe5b041415156131ec57fe5b8091505b5092915050565b60008282111561320a5760009050613210565b81830390505b92915050565b600081613222846132c1565b11905092915050565b600080600080600080603c806018601e8a6080015102020202945061325d85886060015161275590919063ffffffff16565b93506000925060008760a0015114156132825761327b8489036132c1565b92506132b3565b61328d8489036132c1565b91508660e001518761010001510390506132b081836131f790919063ffffffff16565b92505b829550505050505092915050565b6000613310601e61330260186132f4603c6132e6603c8961277390919063ffffffff16565b61277390919063ffffffff16565b61277390919063ffffffff16565b61277390919063ffffffff16565b9050919050565b61014060405190810160405280600015158152602001600060ff168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815250905600a165627a7a7230582024fb9ce1cb2ee0851c285b637255da6109ef1fbff91d4e5c7464efa2c30e67820029

Deployed Bytecode Sourcemap

21409:502:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2427:135;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2427:135:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18866:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18866:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;21730:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21730: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;21730: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18970:2081;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18970:2081: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17087:350;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17087:350:0;;;;;;;;;;;;;;;;;;;;;;;;;;21059:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21059:159:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3131:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3131:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;21821:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21821: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;21821: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17613:540;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17613:540: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;18866:96::-;18914:4;18938:16;;;;;;;;;;;18931:23;;18866:96;:::o;21730:83::-;21767:6;21800:5;21793:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21730: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;18970:2081::-;19066:4;19224:25;19264:28;19307:25;19347;19387:20;20066:27;;:::i;:::-;3515:5;;;;;;;;;;;3501:19;;:10;:19;;;3493:28;;;;;;;;18835:16;;;;;;;;;;;18834:17;18826:26;;;;;;;;19104:1;19091:10;:14;;;19083:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19151:25;19168:7;19151:12;;:16;;:25;;;;:::i;:::-;19136:12;:40;;;;19206:1;19192:10;:15;;;;19189:1745;;;19453:1;19439:10;:15;;;19436:602;;;19519:1;19499:21;;19562:25;19583:3;19562:16;;:20;;:25;;;;:::i;:::-;19539:48;;19626:2;19606:22;;19667:2;19647:22;;19703:16;;19688:31;;19436:602;;;19758:1;19744:10;:15;;;19741:297;;;19824:1;19804:21;;19867:24;19887:3;19867:15;;:19;;:24;;;;:::i;:::-;19844:47;;19930:2;19910:22;;19971:2;19951:22;;20007:15;;19992:30;;19741:297;19436:602;20096:498;;;;;;;;;20134:4;20096:498;;;;;;20169:10;20096:498;;;;;;20206:7;20096:498;;;;20249:17;;20096:498;;;;20304:17;20096:498;;;;20361:1;20096:498;;;;20403:20;20096:498;;;;20461:17;20096:498;;;;20516:17;20096:498;;;;20566:12;20096:498;;;20066:528;;20654:11;20623;:16;20635:3;20623:16;;;;;;;;;;;;;;;:28;20640:10;20623:28;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20722:3;20699:146;;20718:1;20699:146;;;20727:7;20736:10;20748:17;;20767;20786:20;20808:17;20827;20699:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19189:1745;;;20895:27;20914:7;20895:9;:14;20905:3;20895:14;;;;;;;;;;;;;;;;:18;;:27;;;;:::i;:::-;20878:9;:14;20888:3;20878:14;;;;;;;;;;;;;;;:44;;;;19189:1745;20956:3;20951:18;;;20961:7;20951:18;;;;;;;;;;;;;;;;;;21006:3;20985:34;;21002:1;20985:34;;;21011:7;20985:34;;;;;;;;;;;;;;;;;;21039:4;21032:11;;18970:2081;;;;;;;;;;;:::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;17087:350::-;3515:5;;;;;;;;;;;3501:19;;:10;:19;;;3493:28;;;;;;;;17174:9;:21;17184:10;17174:21;;;;;;;;;;;;;;;;17164:6;:31;;17156:40;;;;;;;;17233:33;17259:6;17233:9;:21;17243:10;17233:21;;;;;;;;;;;;;;;;:25;;:33;;;;:::i;:::-;17209:9;:21;17219:10;17209:21;;;;;;;;;;;;;;;:57;;;;17292:24;17309:6;17292:12;;:16;;:24;;;;:::i;:::-;17277:12;:39;;;;17354:10;17338:35;;;17366:6;17338:35;;;;;;;;;;;;;;;;;;17418:1;17389:40;;17398:10;17389:40;;;17422:6;17389:40;;;;;;;;;;;;;;;;;;17087:350;:::o;21059:159::-;21118:4;3515:5;;;;;;;;;;;3501:19;;:10;:19;;;3493:28;;;;;;;;18835:16;;;;;;;;;;;18834:17;18826:26;;;;;;;;21154:4;21135:16;;:23;;;;;;;;;;;;;;;;;;21174:14;;;;;;;;;;21206:4;21199:11;;21059:159;:::o;3131:20::-;;;;;;;;;;;;;:::o;21821:87::-;21860:6;21893:7;21886:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21821: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;17613:540::-;17687:22;17748:25;16957:42;16943:56;;:10;:56;;;:123;;;;17024:42;17010:56;;:10;:56;;;16943:123;16935:138;;;;;;;;17712:13;:25;17726:10;17712:25;;;;;;;;;;;;;;;;;;;;;;;;;17687:50;;17776:11;:23;17788:10;17776:23;;;;;;;;;;;;;;;:41;17800:16;17776:41;;;;;;;;;;;;;;;17748:69;;17848:27;17868:6;17848:8;:15;;;:19;;:27;;;;:::i;:::-;17830:8;:15;;:45;;;;17901:24;17918:6;17901:12;;:16;;:24;;;;:::i;:::-;17886:12;:39;;;;17960:1;17941:8;:15;;;:20;17938:77;;;17998:5;17978:8;:17;;;:25;;;;;;;;;;;;;;;;;;17938:77;18052:10;18036:53;;;18064:6;18072:16;18036:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;18134:1;18105:40;;18114:10;18105:40;;;18138:6;18105:40;;;;;;;;;;;;;;;;;;17613:540;;;:::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;16095:358::-;16215:4;16308:13;16237:21;16248:9;16237:10;:21::i;:::-;16236:22;16232:66;;;16282:4;16275:11;;;;16232:66;16339:9;16324:41;;;16366:10;16378:6;16386;16394:5;16324: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;16324:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16324:76:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;16324:76:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;16324:76:0;;;;;;;;;;;;;;;;16308:92;;5134:10;16429:15;;16419:25;;;:6;:25;;;;16411:34;;16095:358;;;;;;;;:::o;10502:1649::-;10726:23;10760:25;10796:28;10835:25;10871;10907:20;11523: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:555;;;11020:3;11002:21;;11058:1;11038:21;;11097:15;11108:3;11097:6;:10;;:15;;;;:::i;:::-;11074:38;;11147:1;11127:21;;11183:1;11163:21;;11214:6;11199:21;;10948:555;;;11290:3;11272:21;;11328:1;11308:21;;11367:14;11378:2;11367:6;:10;;:14;;;;:::i;:::-;11344:37;;11416:2;11396:22;;11453:2;11433:22;;11485:6;11470:21;;10948:555;11553:456;;;;;;;;;11587:4;11553:456;;;;;;11618:15;11553:456;;;;;;11656:6;11553:456;;;;11694:15;11553:456;;;;11743:17;11553:456;;;;11796:1;11553:456;;;;11834:20;11553:456;;;;11888:17;11553:456;;;;11939:17;11553:456;;;;11985:12;11553:456;;;11523:486;;12050:29;12072:6;12050:9;:17;12060:6;12050:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;12030:9;:17;12040:6;12030:17;;;;;;;;;;;;;;;:49;;;;12132:11;12090;:22;12102:9;12090:22;;;;;;;;;;;;;;;:39;12113:15;12090:39;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10502:1649;;;;;;;;;;;:::o;12163:2675::-;12233:25;12675:24;13058:17;13092:13;13206:20;13271:19;13338:7;14302:25;12261:11;:19;12273:6;12261:19;;;;;;;;;;;;;;;:30;12281:9;12261:30;;;;;;;;;;;;;;;12233:58;;12382:1;12369:9;:14;;;:49;;;;;12417:1;12387:8;:26;;;:31;12369:49;:96;;;;;12462:3;12422:36;12451:6;12422:8;:24;;;:28;;:36;;;;:::i;:::-;:43;;12369:96;12366:528;;;12541:36;12570:6;12541:8;:24;;;:28;;:36;;;;:::i;:::-;12514:8;:24;;:63;;;;12621:1;12592:8;:26;;:30;;;;12702:36;12736:1;12702:8;:29;;;:33;;:36;;;;:::i;:::-;12675:63;;12771:37;12791:16;12771:8;:15;;;:19;;:37;;;;:::i;:::-;12753:8;:15;;:55;;;;12843:39;12865:16;12843:9;:17;12853:6;12843:17;;;;;;;;;;;;;;;;:21;;:39;;;;:::i;:::-;12823:9;:17;12833:6;12823:17;;;;;;;;;;;;;;;:59;;;;12366:528;13006:5;12909:102;;:93;12935:37;12947:8;:24;;;12935:3;:11;;:37;;;;:::i;:::-;12975:8;:26;;;12909:24;:93::i;:::-;:102;;;12906:140;;;13028:7;;12906:140;13078:3;13058:23;;13108:36;13124:9;13135:8;13108:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;:36::i;:::-;13092:52;;13186:1;13177:5;:10;13174:22;;;13189:7;;13174:22;13253:1;13240:9;:14;;;13237:977;;;13293:8;:26;;;13271:48;;13348:1;13338:11;;13334:781;13355:5;13351:1;:9;;;13334:781;;;13404:1;13389:11;:16;13386:218;;;13458:1;13444:11;:15;13430:29;;13497:55;13514:37;13548:2;13514:8;:29;;;:33;;:37;;;;:::i;:::-;13497:12;:16;;:55;;;;:::i;:::-;13482:70;;13576:8;;13386:218;13642:1;13627:11;:16;;:36;;;;;13662:1;13647:11;:16;;13627:36;13624:238;;;13716:1;13702:11;:15;13688:29;;13755:55;13772:37;13806:2;13772:8;:29;;;:33;;:37;;;;:::i;:::-;13755:12;:16;;:55;;;;:::i;:::-;13740:70;;13834:8;;13624:238;13900:1;13885:11;:16;13882:218;;;13954:1;13940:11;:15;13926:29;;13993:55;14010:37;14044:2;14010:8;:29;;;:33;;:37;;;;:::i;:::-;13993:12;:16;;:55;;;;:::i;:::-;13978:70;;14072:8;;13882:218;13334:781;13362:3;;;;;;;13334:781;;;13237:977;;;14162:40;14172:8;:29;;;14162:5;:9;;:40;;;;:::i;:::-;14147:55;;13237:977;14330:41;14365:5;14330:8;:26;;;:34;;:41;;;;:::i;:::-;14302:69;;14427:1;14386:37;14410:12;14386:8;:15;;;:23;;:37;;;;:::i;:::-;:42;:68;;;;14453:1;14432:17;:22;14386:68;14382:171;;;14486:8;:15;;;14471:30;;14536:5;14516:8;:17;;;:25;;;;;;;;;;;;;;;;;;14382:171;14632:3;14601:8;:28;;:34;;;;14675:17;14646:8;:26;;:46;;;;14721:33;14741:12;14721:8;:15;;;:19;;:33;;;;:::i;:::-;14703:8;:15;;:51;;;;14795:35;14817:12;14795:9;:17;14805:6;14795:17;;;;;;;;;;;;;;;;:21;;:35;;;;:::i;:::-;14775:9;:17;14785:6;14775:17;;;;;;;;;;;;;;;:55;;;;12163:2675;;;;;;;;;;;:::o;15913:174::-;15973:4;15990:12;16044:7;16032:20;16024:28;;16078:1;16071:4;:8;16064:15;;15913: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;15607:151::-;15694:4;15744:6;15718:23;15736:4;15718:17;:23::i;:::-;:32;15711:39;;15607:151;;;;:::o;14850:745::-;14939:7;14990:18;15070:17;15141:13;15309:21;15391:26;15055:2;15050;15045;15040;15011:8;:26;;;:31;:36;:41;:46;14990:67;;15090:40;15119:10;15090:8;:24;;;:28;;:40;;;;:::i;:::-;15070:60;;15157:1;15141:17;;15207:1;15175:8;:28;;;:33;15171:394;;;15233:43;15266:9;15251:12;:24;15233:17;:43::i;:::-;15225:51;;15171:394;;;15333:43;15366:9;15351:12;:24;15333:17;:43::i;:::-;15309:67;;15449:8;:26;;;15420:8;:26;;;:55;15391:84;;15512:41;15534:18;15512:13;:21;;:41;;;;:::i;:::-;15504:49;;15171:394;15582:5;15575:12;;14850:745;;;;;;;;;:::o;15770:135::-;15834:7;15861:36;15894:2;15861:28;15886:2;15861:20;15878:2;15861:12;15870:2;15861:4;:8;;:12;;;;:::i;:::-;:16;;:20;;;;:::i;:::-;:24;;:28;;;;:::i;:::-;:32;;:36;;;;:::i;:::-;15854:43;;15770:135;;;:::o;21409:502::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://24fb9ce1cb2ee0851c285b637255da6109ef1fbff91d4e5c7464efa2c30e6782

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

OVERVIEW

Cardio Healthcare tokenizes user's exercise data by issuing its native cryptocurrency to users for their verified exercise data.

Loading...
Loading
[ Download: CSV Export  ]

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.