I cloned and am trying to run this example code but it throws an error “name Fundamental not defined”.  Is there a module I need to import?

from AlgorithmImports import *

class MorningStarDataAlgorithm(QCAlgorithm):

    def Initialize(self) -> None:
        self.SetStartDate(2021, 1, 1)
        self.SetEndDate(2021, 7, 1)
        # Requesting data
        self.num_coarse_symbols = 100
        self.num_fine_symbols = 10
        self.UniverseSettings.Resolution = Resolution.Daily
    def FundamentalSelectionFunction(self, fundamental: List[Fundamental]) -> List[Symbol]:
        selected = [f for f in fundamental if f.HasFundamentalData and f.Price > 1]
        sorted_by_dollar_volume = sorted(selected, key=lambda f: f.DollarVolume, reverse=True)[:self.num_coarse_symbols]

        sorted_by_pe_ratio = sorted(sorted_by_dollar_volume, key=lambda f: f.ValuationRatios.PERatio, reverse=False)[:self.num_fine_symbols]
        return [ f.Symbol for f in sorted_by_pe_ratio ]

    def OnData(self, slice: Slice) -> None:
        # if we have no changes, do nothing
        if self._changes is None: return

        # liquidate removed securities
        for security in self._changes.RemovedSecurities:
            if security.Invested:

        # we want 1/N allocation in each security in our universe
        for security in self._changes.AddedSecurities:
            self.SetHoldings(security.Symbol, 1 / self.num_fine_symbols)

        self._changes = None
    def OnSecuritiesChanged(self, changes: SecurityChanges) -> None:
        self._changes = changes
        for security in changes.AddedSecurities:
            # Historical data
            history = self.History(security.Symbol, 7, Resolution.Daily)
            self.Debug(f"We got {len(history)} from our history request for {security.Symbol}")