contract FreezableToken {

    mapping(address => bool) private _frozenAccounts;

    event FrozenFunds(address target, bool frozen);

    /**
     * @dev Freze account
     */
    function _freeze(address target, bool freeze) internal {

        _beforeAccountFreeze(target);

        require(target != address(0), "FreezableToken: target the zero address");
        _frozenAccounts[target] = freeze;
        emit FrozenFunds(target, freeze);
    }

    /** @dev Check is account is frozen
    */
    function isFrozen(address account) public view returns (bool) {
        return !_frozenAccounts[account];
    }

    function _beforeAccountFreeze(address account) internal virtual {}
}
/**
 * @title Freezable token
 * @dev Add ability froze accounts
 */
function isFrozen(address account) public view returns (bool) {
    return !_frozenAccounts[account];
}

/** @dev Check is account is frozen
 */