contract PausableToken is StandardToken, Pausable {

  event Burn(address indexed from, uint256 value);
  event Mint(address indexed to, uint256 value);

  function transfer(
    address _to,
    uint256 _value
  )
    public
    whenNotPaused
    returns (bool)
  {
    return super.transfer(_to, _value);
  }

  function transferFrom(
    address _from,
    address _to,
    uint256 _value
  )
    public
    whenNotPaused
    returns (bool)
  {
    return super.transferFrom(_from, _to, _value);
  }

  function approve(
    address _spender,
    uint256 _value
  )
    public
    whenNotPaused
    returns (bool)
  {
    return super.approve(_spender, _value);
  }

  /**
   * @dev Burns a specific amount of tokens.
   * @param _value The amount of token to be burned.
   */
  function burn(uint256 _value) public onlyOwner {
    require(balances[msg.sender] >= _value);
    balances[msg.sender] = balances[msg.sender].sub(_value);
    totalSupply_ = totalSupply_.sub(_value);
    emit Transfer(msg.sender, address(0x00), _value);
    emit Burn(msg.sender, _value);
  }

  function mint(uint256 _value) public onlyOwner {
    balances[msg.sender] = balances[msg.sender].add(_value);
    totalSupply_ = totalSupply_.add(_value);
    emit Transfer(address(0x00), msg.sender, _value);
    emit Mint(msg.sender, _value);
  }
}
/**
 * Overriding ERC-20 specification that lets owner Pause all trading.
 */
function burn(uint256 _value) public onlyOwner {
  require(balances[msg.sender] >= _value);
  balances[msg.sender] = balances[msg.sender].sub(_value);
  totalSupply_ = totalSupply_.sub(_value);
  emit Transfer(msg.sender, address(0x00), _value);
  emit Burn(msg.sender, _value);
}

/**
 * @dev Burns a specific amount of tokens.
 * @param _value The amount of token to be burned.
 */