<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def find_pair(self, crypto="", fiat="", verbose=False):
 """ This utility is used to find an exchange that supports a given exchange pair. """

        self.fetch_pairs()
        if not crypto and not fiat:
            raise Exception("Fiat or Crypto required")

        def is_matched(crypto, fiat, pair):
            if crypto and not fiat:
                return pair.startswith("%s-" % crypto)
            if crypto and fiat:
                return pair == "%s-%s" % (crypto, fiat)
            if not crypto:
                return pair.endswith("-%s" % fiat)

        matched_pairs = {}
        for Service, pairs in self._all_pairs.items():
            matched = [p for p in pairs if is_matched(crypto, fiat, p)]
            if matched:
                matched_pairs[Service] = matched

        return matched_pairs