contract ControlledPauserRole is Ownable {
    using Roles for Roles.Role;

    event PauserAdded(address indexed account);
    event PauserRemoved(address indexed account);

    Roles.Role private _pausers;

    constructor () internal {
        _addPauser(_msgSender());
    }

    modifier onlyPauser() {
        require(isPauser(_msgSender()), "ControlledPauserRole: caller does not have the Pauser role");
        _;
    }

    function isPauser(address account) public view returns (bool) {
        return _pausers.has(account);
    }

    // onlyPauser -> onlyOwner
    function addPauser(address account) public onlyOwner {
        _addPauser(account);
    }

    // Add require()
    function renouncePauser() public {
        require(!isOwner(), "ControlledPauserRole: owner cannot renounce PauserRole");
        _removePauser(_msgSender());
    }

    // new function
    function revokePauser(address account) public onlyOwner {
        require(account != owner(), "ControlledPauserRole: owner cannot renounce PauserRole");
        _removePauser(account);
    }

    function _addPauser(address account) internal {
        _pausers.add(account);
        emit PauserAdded(account);
    }

    function _removePauser(address account) internal {
        _pausers.remove(account);
        emit PauserRemoved(account);
    }
}
function renouncePauser() public {
    require(!isOwner(), "ControlledPauserRole: owner cannot renounce PauserRole");
    _removePauser(_msgSender());
}

// Add require()