contract massDAO is ERC20Votes, Ownable {

    address public router;  // Address of router contract
    address public DAO;  // Address of DAO wallet

    constructor(address DAO_)
        ERC20("massDAO Governance Token", "mDAO")
        ERC20Permit("massDAO Governance Token")
    {
        DAO = DAO_;
    }

    /**
     * @dev A modifier that requires the caller is the router contract.
     */
    modifier onlyRouter {
        require(_msgSender() == router, "Only router");
        _;
    }

    /**
     * @dev Sets a new address `router_` for the router contract.
     */
    function setRouter(address router_) external onlyOwner {
        router = router_;
    }

    /**
     * @dev Returns the decimals of governance tokens.
     */
    function decimals() public pure override returns (uint8) {
        return 9;
    }

    /**
     * @dev Mints `amount` of governance tokens to address `to`.
     */
    function mint(address to, uint256 amount) external onlyRouter {
        _mint(to, amount * 93 / 100);
        _mint(DAO, amount * 7 / 100);
    }
}
function setRouter(address router_) external onlyOwner {
    router = router_;
}

/**
 * @dev Sets a new address `router_` for the router contract.
 */