input: Write a python function to fit a forecast model using the provided hierarchical approach and the Prophet package.
  ```python
  assert isinstance(fitForecast(y, h, sumMat, nodes, method, freq, include_history, cap, capF, changepoints, n_changepoints, yearly_seasonality, weekly_seasonality, daily_seasonality, holidays, seasonality_prior_scale, holidays_prior_scale, changepoint_prior_scale, mcmc_samples, interval_width, uncertainty_samples, boxcoxT, skipFitting), dict)
  assert 'yhat' in fitForecast(y, h, sumMat, nodes, method, freq, include_history, cap, capF, changepoints, n_changepoints, yearly_seasonality, weekly_seasonality, daily_seasonality, holidays, seasonality_prior_scale, holidays_prior_scale, changepoint_prior_scale, mcmc_samples, interval_width, uncertainty_samples, boxcoxT, skipFitting)[0].columns
output: def fitForecast(y, h, sumMat, nodes, method, freq, include_history, cap, capF, changepoints, n_changepoints, yearly_seasonality, weekly_seasonality, daily_seasonality, holidays, seasonality_prior_scale, holidays_prior_scale, changepoint_prior_scale, mcmc_samples, interval_width, uncertainty_samples, boxcoxT, skipFitting):
      from fbprophet import Prophet
      import pandas as pd
      import numpy as np
      
      forecasts = {}
      for node in nodes:
          df = y[node].reset_index()
          df.columns = ['ds', 'y']
          
          if boxcoxT:
              df['y'], lam = boxcox(df['y'])
          
          m = Prophet(
              yearly_seasonality=yearly_seasonality,
              weekly_seasonality=weekly_seasonality,
              daily_seasonality=daily_seasonality,
              holidays=holidays,
              seasonality_prior_scale=seasonality_prior_scale,
              holidays_prior_scale=holidays_prior_scale,
              changepoint_prior_scale=changepoint_prior_scale,
              mcmc_samples=mcmc_samples,
              interval_width=interval_width,
              uncertainty_samples=uncertainty_samples
          )
          
          if cap is not None:
              df['cap'] = cap[node]
              m.add_regressor('cap')
          
          if changepoints is not None:
              m.changepoints = changepoints
          
          if skipFitting:
              forecast = m.predict(df)
          else:
              m.fit(df)
              future = m.make_future_dataframe(periods=h, freq=freq, include_history=include_history)
              if capF is not None:
                  future['cap'] = capF[node]
              forecast = m.predict(future)
          
          if boxcoxT:
              forecast['yhat'] = inv_boxcox(forecast['yhat'], lam)
          
          forecasts[node] = forecast
      
      forecasts_df = pd.concat(forecasts, axis=1)
      forecasts_df = forecasts_df.swaplevel(axis=1).sort_index(axis=1)
      
      return forecasts_df.to_dict()