/*
 *
 *    Copyright (c) 2022 Project CHIP Authors
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

// THIS FILE IS GENERATED BY ZAP
// This file is generated from cluster-objects.cpp.zapt

#include <app-common/zap-generated/cluster-objects.h>

// Includes below are because the compiler seems to be able to optimize better
// if all structures are visible in one compilation unit (saves aroud 500 bytes
// of flash on a lighting app when compared to individual cpp compilation)
#include <clusters/AccessControl/Attributes.ipp>
#include <clusters/AccessControl/Commands.ipp>
#include <clusters/AccessControl/Events.ipp>
#include <clusters/AccessControl/Structs.ipp>
#include <clusters/AccountLogin/Attributes.ipp>
#include <clusters/AccountLogin/Commands.ipp>
#include <clusters/AccountLogin/Events.ipp>
#include <clusters/AccountLogin/Structs.ipp>
#include <clusters/Actions/Attributes.ipp>
#include <clusters/Actions/Commands.ipp>
#include <clusters/Actions/Events.ipp>
#include <clusters/Actions/Structs.ipp>
#include <clusters/ActivatedCarbonFilterMonitoring/Attributes.ipp>
#include <clusters/ActivatedCarbonFilterMonitoring/Commands.ipp>
#include <clusters/ActivatedCarbonFilterMonitoring/Events.ipp>
#include <clusters/ActivatedCarbonFilterMonitoring/Structs.ipp>
#include <clusters/AdministratorCommissioning/Attributes.ipp>
#include <clusters/AdministratorCommissioning/Commands.ipp>
#include <clusters/AdministratorCommissioning/Events.ipp>
#include <clusters/AdministratorCommissioning/Structs.ipp>
#include <clusters/AirQuality/Attributes.ipp>
#include <clusters/AirQuality/Commands.ipp>
#include <clusters/AirQuality/Events.ipp>
#include <clusters/AirQuality/Structs.ipp>
#include <clusters/ApplicationBasic/Attributes.ipp>
#include <clusters/ApplicationBasic/Commands.ipp>
#include <clusters/ApplicationBasic/Events.ipp>
#include <clusters/ApplicationBasic/Structs.ipp>
#include <clusters/ApplicationLauncher/Attributes.ipp>
#include <clusters/ApplicationLauncher/Commands.ipp>
#include <clusters/ApplicationLauncher/Events.ipp>
#include <clusters/ApplicationLauncher/Structs.ipp>
#include <clusters/AudioOutput/Attributes.ipp>
#include <clusters/AudioOutput/Commands.ipp>
#include <clusters/AudioOutput/Events.ipp>
#include <clusters/AudioOutput/Structs.ipp>
#include <clusters/BallastConfiguration/Attributes.ipp>
#include <clusters/BallastConfiguration/Commands.ipp>
#include <clusters/BallastConfiguration/Events.ipp>
#include <clusters/BallastConfiguration/Structs.ipp>
#include <clusters/BasicInformation/Attributes.ipp>
#include <clusters/BasicInformation/Commands.ipp>
#include <clusters/BasicInformation/Events.ipp>
#include <clusters/BasicInformation/Structs.ipp>
#include <clusters/Binding/Attributes.ipp>
#include <clusters/Binding/Commands.ipp>
#include <clusters/Binding/Events.ipp>
#include <clusters/Binding/Structs.ipp>
#include <clusters/BooleanState/Attributes.ipp>
#include <clusters/BooleanState/Commands.ipp>
#include <clusters/BooleanState/Events.ipp>
#include <clusters/BooleanState/Structs.ipp>
#include <clusters/BooleanStateConfiguration/Attributes.ipp>
#include <clusters/BooleanStateConfiguration/Commands.ipp>
#include <clusters/BooleanStateConfiguration/Events.ipp>
#include <clusters/BooleanStateConfiguration/Structs.ipp>
#include <clusters/BridgedDeviceBasicInformation/Attributes.ipp>
#include <clusters/BridgedDeviceBasicInformation/Commands.ipp>
#include <clusters/BridgedDeviceBasicInformation/Events.ipp>
#include <clusters/BridgedDeviceBasicInformation/Structs.ipp>
#include <clusters/CameraAvSettingsUserLevelManagement/Attributes.ipp>
#include <clusters/CameraAvSettingsUserLevelManagement/Commands.ipp>
#include <clusters/CameraAvSettingsUserLevelManagement/Events.ipp>
#include <clusters/CameraAvSettingsUserLevelManagement/Structs.ipp>
#include <clusters/CameraAvStreamManagement/Attributes.ipp>
#include <clusters/CameraAvStreamManagement/Commands.ipp>
#include <clusters/CameraAvStreamManagement/Events.ipp>
#include <clusters/CameraAvStreamManagement/Structs.ipp>
#include <clusters/CarbonDioxideConcentrationMeasurement/Attributes.ipp>
#include <clusters/CarbonDioxideConcentrationMeasurement/Commands.ipp>
#include <clusters/CarbonDioxideConcentrationMeasurement/Events.ipp>
#include <clusters/CarbonDioxideConcentrationMeasurement/Structs.ipp>
#include <clusters/CarbonMonoxideConcentrationMeasurement/Attributes.ipp>
#include <clusters/CarbonMonoxideConcentrationMeasurement/Commands.ipp>
#include <clusters/CarbonMonoxideConcentrationMeasurement/Events.ipp>
#include <clusters/CarbonMonoxideConcentrationMeasurement/Structs.ipp>
#include <clusters/Channel/Attributes.ipp>
#include <clusters/Channel/Commands.ipp>
#include <clusters/Channel/Events.ipp>
#include <clusters/Channel/Structs.ipp>
#include <clusters/Chime/Attributes.ipp>
#include <clusters/Chime/Commands.ipp>
#include <clusters/Chime/Events.ipp>
#include <clusters/Chime/Structs.ipp>
#include <clusters/ClosureControl/Attributes.ipp>
#include <clusters/ClosureControl/Commands.ipp>
#include <clusters/ClosureControl/Events.ipp>
#include <clusters/ClosureControl/Structs.ipp>
#include <clusters/ClosureDimension/Attributes.ipp>
#include <clusters/ClosureDimension/Commands.ipp>
#include <clusters/ClosureDimension/Events.ipp>
#include <clusters/ClosureDimension/Structs.ipp>
#include <clusters/ColorControl/Attributes.ipp>
#include <clusters/ColorControl/Commands.ipp>
#include <clusters/ColorControl/Events.ipp>
#include <clusters/ColorControl/Structs.ipp>
#include <clusters/CommissionerControl/Attributes.ipp>
#include <clusters/CommissionerControl/Commands.ipp>
#include <clusters/CommissionerControl/Events.ipp>
#include <clusters/CommissionerControl/Structs.ipp>
#include <clusters/CommodityMetering/Attributes.ipp>
#include <clusters/CommodityMetering/Commands.ipp>
#include <clusters/CommodityMetering/Events.ipp>
#include <clusters/CommodityMetering/Structs.ipp>
#include <clusters/CommodityPrice/Attributes.ipp>
#include <clusters/CommodityPrice/Commands.ipp>
#include <clusters/CommodityPrice/Events.ipp>
#include <clusters/CommodityPrice/Structs.ipp>
#include <clusters/CommodityTariff/Attributes.ipp>
#include <clusters/CommodityTariff/Commands.ipp>
#include <clusters/CommodityTariff/Events.ipp>
#include <clusters/CommodityTariff/Structs.ipp>
#include <clusters/ContentAppObserver/Attributes.ipp>
#include <clusters/ContentAppObserver/Commands.ipp>
#include <clusters/ContentAppObserver/Events.ipp>
#include <clusters/ContentAppObserver/Structs.ipp>
#include <clusters/ContentControl/Attributes.ipp>
#include <clusters/ContentControl/Commands.ipp>
#include <clusters/ContentControl/Events.ipp>
#include <clusters/ContentControl/Structs.ipp>
#include <clusters/ContentLauncher/Attributes.ipp>
#include <clusters/ContentLauncher/Commands.ipp>
#include <clusters/ContentLauncher/Events.ipp>
#include <clusters/ContentLauncher/Structs.ipp>
#include <clusters/Descriptor/Attributes.ipp>
#include <clusters/Descriptor/Commands.ipp>
#include <clusters/Descriptor/Events.ipp>
#include <clusters/Descriptor/Structs.ipp>
#include <clusters/DeviceEnergyManagement/Attributes.ipp>
#include <clusters/DeviceEnergyManagement/Commands.ipp>
#include <clusters/DeviceEnergyManagement/Events.ipp>
#include <clusters/DeviceEnergyManagement/Structs.ipp>
#include <clusters/DeviceEnergyManagementMode/Attributes.ipp>
#include <clusters/DeviceEnergyManagementMode/Commands.ipp>
#include <clusters/DeviceEnergyManagementMode/Events.ipp>
#include <clusters/DeviceEnergyManagementMode/Structs.ipp>
#include <clusters/DiagnosticLogs/Attributes.ipp>
#include <clusters/DiagnosticLogs/Commands.ipp>
#include <clusters/DiagnosticLogs/Events.ipp>
#include <clusters/DiagnosticLogs/Structs.ipp>
#include <clusters/DishwasherAlarm/Attributes.ipp>
#include <clusters/DishwasherAlarm/Commands.ipp>
#include <clusters/DishwasherAlarm/Events.ipp>
#include <clusters/DishwasherAlarm/Structs.ipp>
#include <clusters/DishwasherMode/Attributes.ipp>
#include <clusters/DishwasherMode/Commands.ipp>
#include <clusters/DishwasherMode/Events.ipp>
#include <clusters/DishwasherMode/Structs.ipp>
#include <clusters/DoorLock/Attributes.ipp>
#include <clusters/DoorLock/Commands.ipp>
#include <clusters/DoorLock/Events.ipp>
#include <clusters/DoorLock/Structs.ipp>
#include <clusters/EcosystemInformation/Attributes.ipp>
#include <clusters/EcosystemInformation/Commands.ipp>
#include <clusters/EcosystemInformation/Events.ipp>
#include <clusters/EcosystemInformation/Structs.ipp>
#include <clusters/ElectricalEnergyMeasurement/Attributes.ipp>
#include <clusters/ElectricalEnergyMeasurement/Commands.ipp>
#include <clusters/ElectricalEnergyMeasurement/Events.ipp>
#include <clusters/ElectricalEnergyMeasurement/Structs.ipp>
#include <clusters/ElectricalGridConditions/Attributes.ipp>
#include <clusters/ElectricalGridConditions/Commands.ipp>
#include <clusters/ElectricalGridConditions/Events.ipp>
#include <clusters/ElectricalGridConditions/Structs.ipp>
#include <clusters/ElectricalPowerMeasurement/Attributes.ipp>
#include <clusters/ElectricalPowerMeasurement/Commands.ipp>
#include <clusters/ElectricalPowerMeasurement/Events.ipp>
#include <clusters/ElectricalPowerMeasurement/Structs.ipp>
#include <clusters/EnergyEvse/Attributes.ipp>
#include <clusters/EnergyEvse/Commands.ipp>
#include <clusters/EnergyEvse/Events.ipp>
#include <clusters/EnergyEvse/Structs.ipp>
#include <clusters/EnergyEvseMode/Attributes.ipp>
#include <clusters/EnergyEvseMode/Commands.ipp>
#include <clusters/EnergyEvseMode/Events.ipp>
#include <clusters/EnergyEvseMode/Structs.ipp>
#include <clusters/EnergyPreference/Attributes.ipp>
#include <clusters/EnergyPreference/Commands.ipp>
#include <clusters/EnergyPreference/Events.ipp>
#include <clusters/EnergyPreference/Structs.ipp>
#include <clusters/EthernetNetworkDiagnostics/Attributes.ipp>
#include <clusters/EthernetNetworkDiagnostics/Commands.ipp>
#include <clusters/EthernetNetworkDiagnostics/Events.ipp>
#include <clusters/EthernetNetworkDiagnostics/Structs.ipp>
#include <clusters/FanControl/Attributes.ipp>
#include <clusters/FanControl/Commands.ipp>
#include <clusters/FanControl/Events.ipp>
#include <clusters/FanControl/Structs.ipp>
#include <clusters/FaultInjection/Attributes.ipp>
#include <clusters/FaultInjection/Commands.ipp>
#include <clusters/FaultInjection/Events.ipp>
#include <clusters/FaultInjection/Structs.ipp>
#include <clusters/FixedLabel/Attributes.ipp>
#include <clusters/FixedLabel/Commands.ipp>
#include <clusters/FixedLabel/Events.ipp>
#include <clusters/FixedLabel/Structs.ipp>
#include <clusters/FlowMeasurement/Attributes.ipp>
#include <clusters/FlowMeasurement/Commands.ipp>
#include <clusters/FlowMeasurement/Events.ipp>
#include <clusters/FlowMeasurement/Structs.ipp>
#include <clusters/FormaldehydeConcentrationMeasurement/Attributes.ipp>
#include <clusters/FormaldehydeConcentrationMeasurement/Commands.ipp>
#include <clusters/FormaldehydeConcentrationMeasurement/Events.ipp>
#include <clusters/FormaldehydeConcentrationMeasurement/Structs.ipp>
#include <clusters/GeneralCommissioning/Attributes.ipp>
#include <clusters/GeneralCommissioning/Commands.ipp>
#include <clusters/GeneralCommissioning/Events.ipp>
#include <clusters/GeneralCommissioning/Structs.ipp>
#include <clusters/GeneralDiagnostics/Attributes.ipp>
#include <clusters/GeneralDiagnostics/Commands.ipp>
#include <clusters/GeneralDiagnostics/Events.ipp>
#include <clusters/GeneralDiagnostics/Structs.ipp>
#include <clusters/GroupKeyManagement/Attributes.ipp>
#include <clusters/GroupKeyManagement/Commands.ipp>
#include <clusters/GroupKeyManagement/Events.ipp>
#include <clusters/GroupKeyManagement/Structs.ipp>
#include <clusters/Groups/Attributes.ipp>
#include <clusters/Groups/Commands.ipp>
#include <clusters/Groups/Events.ipp>
#include <clusters/Groups/Structs.ipp>
#include <clusters/HepaFilterMonitoring/Attributes.ipp>
#include <clusters/HepaFilterMonitoring/Commands.ipp>
#include <clusters/HepaFilterMonitoring/Events.ipp>
#include <clusters/HepaFilterMonitoring/Structs.ipp>
#include <clusters/IcdManagement/Attributes.ipp>
#include <clusters/IcdManagement/Commands.ipp>
#include <clusters/IcdManagement/Events.ipp>
#include <clusters/IcdManagement/Structs.ipp>
#include <clusters/Identify/Attributes.ipp>
#include <clusters/Identify/Commands.ipp>
#include <clusters/Identify/Events.ipp>
#include <clusters/Identify/Structs.ipp>
#include <clusters/IlluminanceMeasurement/Attributes.ipp>
#include <clusters/IlluminanceMeasurement/Commands.ipp>
#include <clusters/IlluminanceMeasurement/Events.ipp>
#include <clusters/IlluminanceMeasurement/Structs.ipp>
#include <clusters/JointFabricAdministrator/Attributes.ipp>
#include <clusters/JointFabricAdministrator/Commands.ipp>
#include <clusters/JointFabricAdministrator/Events.ipp>
#include <clusters/JointFabricAdministrator/Structs.ipp>
#include <clusters/JointFabricDatastore/Attributes.ipp>
#include <clusters/JointFabricDatastore/Commands.ipp>
#include <clusters/JointFabricDatastore/Events.ipp>
#include <clusters/JointFabricDatastore/Structs.ipp>
#include <clusters/KeypadInput/Attributes.ipp>
#include <clusters/KeypadInput/Commands.ipp>
#include <clusters/KeypadInput/Events.ipp>
#include <clusters/KeypadInput/Structs.ipp>
#include <clusters/LaundryDryerControls/Attributes.ipp>
#include <clusters/LaundryDryerControls/Commands.ipp>
#include <clusters/LaundryDryerControls/Events.ipp>
#include <clusters/LaundryDryerControls/Structs.ipp>
#include <clusters/LaundryWasherControls/Attributes.ipp>
#include <clusters/LaundryWasherControls/Commands.ipp>
#include <clusters/LaundryWasherControls/Events.ipp>
#include <clusters/LaundryWasherControls/Structs.ipp>
#include <clusters/LaundryWasherMode/Attributes.ipp>
#include <clusters/LaundryWasherMode/Commands.ipp>
#include <clusters/LaundryWasherMode/Events.ipp>
#include <clusters/LaundryWasherMode/Structs.ipp>
#include <clusters/LevelControl/Attributes.ipp>
#include <clusters/LevelControl/Commands.ipp>
#include <clusters/LevelControl/Events.ipp>
#include <clusters/LevelControl/Structs.ipp>
#include <clusters/LocalizationConfiguration/Attributes.ipp>
#include <clusters/LocalizationConfiguration/Commands.ipp>
#include <clusters/LocalizationConfiguration/Events.ipp>
#include <clusters/LocalizationConfiguration/Structs.ipp>
#include <clusters/LowPower/Attributes.ipp>
#include <clusters/LowPower/Commands.ipp>
#include <clusters/LowPower/Events.ipp>
#include <clusters/LowPower/Structs.ipp>
#include <clusters/MediaInput/Attributes.ipp>
#include <clusters/MediaInput/Commands.ipp>
#include <clusters/MediaInput/Events.ipp>
#include <clusters/MediaInput/Structs.ipp>
#include <clusters/MediaPlayback/Attributes.ipp>
#include <clusters/MediaPlayback/Commands.ipp>
#include <clusters/MediaPlayback/Events.ipp>
#include <clusters/MediaPlayback/Structs.ipp>
#include <clusters/Messages/Attributes.ipp>
#include <clusters/Messages/Commands.ipp>
#include <clusters/Messages/Events.ipp>
#include <clusters/Messages/Structs.ipp>
#include <clusters/MeterIdentification/Attributes.ipp>
#include <clusters/MeterIdentification/Commands.ipp>
#include <clusters/MeterIdentification/Events.ipp>
#include <clusters/MeterIdentification/Structs.ipp>
#include <clusters/MicrowaveOvenControl/Attributes.ipp>
#include <clusters/MicrowaveOvenControl/Commands.ipp>
#include <clusters/MicrowaveOvenControl/Events.ipp>
#include <clusters/MicrowaveOvenControl/Structs.ipp>
#include <clusters/MicrowaveOvenMode/Attributes.ipp>
#include <clusters/MicrowaveOvenMode/Commands.ipp>
#include <clusters/MicrowaveOvenMode/Events.ipp>
#include <clusters/MicrowaveOvenMode/Structs.ipp>
#include <clusters/ModeSelect/Attributes.ipp>
#include <clusters/ModeSelect/Commands.ipp>
#include <clusters/ModeSelect/Events.ipp>
#include <clusters/ModeSelect/Structs.ipp>
#include <clusters/NetworkCommissioning/Attributes.ipp>
#include <clusters/NetworkCommissioning/Commands.ipp>
#include <clusters/NetworkCommissioning/Events.ipp>
#include <clusters/NetworkCommissioning/Structs.ipp>
#include <clusters/NitrogenDioxideConcentrationMeasurement/Attributes.ipp>
#include <clusters/NitrogenDioxideConcentrationMeasurement/Commands.ipp>
#include <clusters/NitrogenDioxideConcentrationMeasurement/Events.ipp>
#include <clusters/NitrogenDioxideConcentrationMeasurement/Structs.ipp>
#include <clusters/OccupancySensing/Attributes.ipp>
#include <clusters/OccupancySensing/Commands.ipp>
#include <clusters/OccupancySensing/Events.ipp>
#include <clusters/OccupancySensing/Structs.ipp>
#include <clusters/OnOff/Attributes.ipp>
#include <clusters/OnOff/Commands.ipp>
#include <clusters/OnOff/Events.ipp>
#include <clusters/OnOff/Structs.ipp>
#include <clusters/OperationalCredentials/Attributes.ipp>
#include <clusters/OperationalCredentials/Commands.ipp>
#include <clusters/OperationalCredentials/Events.ipp>
#include <clusters/OperationalCredentials/Structs.ipp>
#include <clusters/OperationalState/Attributes.ipp>
#include <clusters/OperationalState/Commands.ipp>
#include <clusters/OperationalState/Events.ipp>
#include <clusters/OperationalState/Structs.ipp>
#include <clusters/OtaSoftwareUpdateProvider/Attributes.ipp>
#include <clusters/OtaSoftwareUpdateProvider/Commands.ipp>
#include <clusters/OtaSoftwareUpdateProvider/Events.ipp>
#include <clusters/OtaSoftwareUpdateProvider/Structs.ipp>
#include <clusters/OtaSoftwareUpdateRequestor/Attributes.ipp>
#include <clusters/OtaSoftwareUpdateRequestor/Commands.ipp>
#include <clusters/OtaSoftwareUpdateRequestor/Events.ipp>
#include <clusters/OtaSoftwareUpdateRequestor/Structs.ipp>
#include <clusters/OvenCavityOperationalState/Attributes.ipp>
#include <clusters/OvenCavityOperationalState/Commands.ipp>
#include <clusters/OvenCavityOperationalState/Events.ipp>
#include <clusters/OvenCavityOperationalState/Structs.ipp>
#include <clusters/OvenMode/Attributes.ipp>
#include <clusters/OvenMode/Commands.ipp>
#include <clusters/OvenMode/Events.ipp>
#include <clusters/OvenMode/Structs.ipp>
#include <clusters/OzoneConcentrationMeasurement/Attributes.ipp>
#include <clusters/OzoneConcentrationMeasurement/Commands.ipp>
#include <clusters/OzoneConcentrationMeasurement/Events.ipp>
#include <clusters/OzoneConcentrationMeasurement/Structs.ipp>
#include <clusters/Pm10ConcentrationMeasurement/Attributes.ipp>
#include <clusters/Pm10ConcentrationMeasurement/Commands.ipp>
#include <clusters/Pm10ConcentrationMeasurement/Events.ipp>
#include <clusters/Pm10ConcentrationMeasurement/Structs.ipp>
#include <clusters/Pm1ConcentrationMeasurement/Attributes.ipp>
#include <clusters/Pm1ConcentrationMeasurement/Commands.ipp>
#include <clusters/Pm1ConcentrationMeasurement/Events.ipp>
#include <clusters/Pm1ConcentrationMeasurement/Structs.ipp>
#include <clusters/Pm25ConcentrationMeasurement/Attributes.ipp>
#include <clusters/Pm25ConcentrationMeasurement/Commands.ipp>
#include <clusters/Pm25ConcentrationMeasurement/Events.ipp>
#include <clusters/Pm25ConcentrationMeasurement/Structs.ipp>
#include <clusters/PowerSource/Attributes.ipp>
#include <clusters/PowerSource/Commands.ipp>
#include <clusters/PowerSource/Events.ipp>
#include <clusters/PowerSource/Structs.ipp>
#include <clusters/PowerSourceConfiguration/Attributes.ipp>
#include <clusters/PowerSourceConfiguration/Commands.ipp>
#include <clusters/PowerSourceConfiguration/Events.ipp>
#include <clusters/PowerSourceConfiguration/Structs.ipp>
#include <clusters/PowerTopology/Attributes.ipp>
#include <clusters/PowerTopology/Commands.ipp>
#include <clusters/PowerTopology/Events.ipp>
#include <clusters/PowerTopology/Structs.ipp>
#include <clusters/PressureMeasurement/Attributes.ipp>
#include <clusters/PressureMeasurement/Commands.ipp>
#include <clusters/PressureMeasurement/Events.ipp>
#include <clusters/PressureMeasurement/Structs.ipp>
#include <clusters/ProxyConfiguration/Attributes.ipp>
#include <clusters/ProxyConfiguration/Commands.ipp>
#include <clusters/ProxyConfiguration/Events.ipp>
#include <clusters/ProxyConfiguration/Structs.ipp>
#include <clusters/ProxyDiscovery/Attributes.ipp>
#include <clusters/ProxyDiscovery/Commands.ipp>
#include <clusters/ProxyDiscovery/Events.ipp>
#include <clusters/ProxyDiscovery/Structs.ipp>
#include <clusters/ProxyValid/Attributes.ipp>
#include <clusters/ProxyValid/Commands.ipp>
#include <clusters/ProxyValid/Events.ipp>
#include <clusters/ProxyValid/Structs.ipp>
#include <clusters/PulseWidthModulation/Attributes.ipp>
#include <clusters/PulseWidthModulation/Commands.ipp>
#include <clusters/PulseWidthModulation/Events.ipp>
#include <clusters/PulseWidthModulation/Structs.ipp>
#include <clusters/PumpConfigurationAndControl/Attributes.ipp>
#include <clusters/PumpConfigurationAndControl/Commands.ipp>
#include <clusters/PumpConfigurationAndControl/Events.ipp>
#include <clusters/PumpConfigurationAndControl/Structs.ipp>
#include <clusters/PushAvStreamTransport/Attributes.ipp>
#include <clusters/PushAvStreamTransport/Commands.ipp>
#include <clusters/PushAvStreamTransport/Events.ipp>
#include <clusters/PushAvStreamTransport/Structs.ipp>
#include <clusters/RadonConcentrationMeasurement/Attributes.ipp>
#include <clusters/RadonConcentrationMeasurement/Commands.ipp>
#include <clusters/RadonConcentrationMeasurement/Events.ipp>
#include <clusters/RadonConcentrationMeasurement/Structs.ipp>
#include <clusters/RefrigeratorAlarm/Attributes.ipp>
#include <clusters/RefrigeratorAlarm/Commands.ipp>
#include <clusters/RefrigeratorAlarm/Events.ipp>
#include <clusters/RefrigeratorAlarm/Structs.ipp>
#include <clusters/RefrigeratorAndTemperatureControlledCabinetMode/Attributes.ipp>
#include <clusters/RefrigeratorAndTemperatureControlledCabinetMode/Commands.ipp>
#include <clusters/RefrigeratorAndTemperatureControlledCabinetMode/Events.ipp>
#include <clusters/RefrigeratorAndTemperatureControlledCabinetMode/Structs.ipp>
#include <clusters/RelativeHumidityMeasurement/Attributes.ipp>
#include <clusters/RelativeHumidityMeasurement/Commands.ipp>
#include <clusters/RelativeHumidityMeasurement/Events.ipp>
#include <clusters/RelativeHumidityMeasurement/Structs.ipp>
#include <clusters/RvcCleanMode/Attributes.ipp>
#include <clusters/RvcCleanMode/Commands.ipp>
#include <clusters/RvcCleanMode/Events.ipp>
#include <clusters/RvcCleanMode/Structs.ipp>
#include <clusters/RvcOperationalState/Attributes.ipp>
#include <clusters/RvcOperationalState/Commands.ipp>
#include <clusters/RvcOperationalState/Events.ipp>
#include <clusters/RvcOperationalState/Structs.ipp>
#include <clusters/RvcRunMode/Attributes.ipp>
#include <clusters/RvcRunMode/Commands.ipp>
#include <clusters/RvcRunMode/Events.ipp>
#include <clusters/RvcRunMode/Structs.ipp>
#include <clusters/SampleMei/Attributes.ipp>
#include <clusters/SampleMei/Commands.ipp>
#include <clusters/SampleMei/Events.ipp>
#include <clusters/SampleMei/Structs.ipp>
#include <clusters/ScenesManagement/Attributes.ipp>
#include <clusters/ScenesManagement/Commands.ipp>
#include <clusters/ScenesManagement/Events.ipp>
#include <clusters/ScenesManagement/Structs.ipp>
#include <clusters/ServiceArea/Attributes.ipp>
#include <clusters/ServiceArea/Commands.ipp>
#include <clusters/ServiceArea/Events.ipp>
#include <clusters/ServiceArea/Structs.ipp>
#include <clusters/SmokeCoAlarm/Attributes.ipp>
#include <clusters/SmokeCoAlarm/Commands.ipp>
#include <clusters/SmokeCoAlarm/Events.ipp>
#include <clusters/SmokeCoAlarm/Structs.ipp>
#include <clusters/SoftwareDiagnostics/Attributes.ipp>
#include <clusters/SoftwareDiagnostics/Commands.ipp>
#include <clusters/SoftwareDiagnostics/Events.ipp>
#include <clusters/SoftwareDiagnostics/Structs.ipp>
#include <clusters/SoilMeasurement/Attributes.ipp>
#include <clusters/SoilMeasurement/Commands.ipp>
#include <clusters/SoilMeasurement/Events.ipp>
#include <clusters/SoilMeasurement/Structs.ipp>
#include <clusters/Switch/Attributes.ipp>
#include <clusters/Switch/Commands.ipp>
#include <clusters/Switch/Events.ipp>
#include <clusters/Switch/Structs.ipp>
#include <clusters/TargetNavigator/Attributes.ipp>
#include <clusters/TargetNavigator/Commands.ipp>
#include <clusters/TargetNavigator/Events.ipp>
#include <clusters/TargetNavigator/Structs.ipp>
#include <clusters/TemperatureControl/Attributes.ipp>
#include <clusters/TemperatureControl/Commands.ipp>
#include <clusters/TemperatureControl/Events.ipp>
#include <clusters/TemperatureControl/Structs.ipp>
#include <clusters/TemperatureMeasurement/Attributes.ipp>
#include <clusters/TemperatureMeasurement/Commands.ipp>
#include <clusters/TemperatureMeasurement/Events.ipp>
#include <clusters/TemperatureMeasurement/Structs.ipp>
#include <clusters/Thermostat/Attributes.ipp>
#include <clusters/Thermostat/Commands.ipp>
#include <clusters/Thermostat/Events.ipp>
#include <clusters/Thermostat/Structs.ipp>
#include <clusters/ThermostatUserInterfaceConfiguration/Attributes.ipp>
#include <clusters/ThermostatUserInterfaceConfiguration/Commands.ipp>
#include <clusters/ThermostatUserInterfaceConfiguration/Events.ipp>
#include <clusters/ThermostatUserInterfaceConfiguration/Structs.ipp>
#include <clusters/ThreadBorderRouterManagement/Attributes.ipp>
#include <clusters/ThreadBorderRouterManagement/Commands.ipp>
#include <clusters/ThreadBorderRouterManagement/Events.ipp>
#include <clusters/ThreadBorderRouterManagement/Structs.ipp>
#include <clusters/ThreadNetworkDiagnostics/Attributes.ipp>
#include <clusters/ThreadNetworkDiagnostics/Commands.ipp>
#include <clusters/ThreadNetworkDiagnostics/Events.ipp>
#include <clusters/ThreadNetworkDiagnostics/Structs.ipp>
#include <clusters/ThreadNetworkDirectory/Attributes.ipp>
#include <clusters/ThreadNetworkDirectory/Commands.ipp>
#include <clusters/ThreadNetworkDirectory/Events.ipp>
#include <clusters/ThreadNetworkDirectory/Structs.ipp>
#include <clusters/TimeFormatLocalization/Attributes.ipp>
#include <clusters/TimeFormatLocalization/Commands.ipp>
#include <clusters/TimeFormatLocalization/Events.ipp>
#include <clusters/TimeFormatLocalization/Structs.ipp>
#include <clusters/TimeSynchronization/Attributes.ipp>
#include <clusters/TimeSynchronization/Commands.ipp>
#include <clusters/TimeSynchronization/Events.ipp>
#include <clusters/TimeSynchronization/Structs.ipp>
#include <clusters/Timer/Attributes.ipp>
#include <clusters/Timer/Commands.ipp>
#include <clusters/Timer/Events.ipp>
#include <clusters/Timer/Structs.ipp>
#include <clusters/TlsCertificateManagement/Attributes.ipp>
#include <clusters/TlsCertificateManagement/Commands.ipp>
#include <clusters/TlsCertificateManagement/Events.ipp>
#include <clusters/TlsCertificateManagement/Structs.ipp>
#include <clusters/TlsClientManagement/Attributes.ipp>
#include <clusters/TlsClientManagement/Commands.ipp>
#include <clusters/TlsClientManagement/Events.ipp>
#include <clusters/TlsClientManagement/Structs.ipp>
#include <clusters/TotalVolatileOrganicCompoundsConcentrationMeasurement/Attributes.ipp>
#include <clusters/TotalVolatileOrganicCompoundsConcentrationMeasurement/Commands.ipp>
#include <clusters/TotalVolatileOrganicCompoundsConcentrationMeasurement/Events.ipp>
#include <clusters/TotalVolatileOrganicCompoundsConcentrationMeasurement/Structs.ipp>
#include <clusters/UnitLocalization/Attributes.ipp>
#include <clusters/UnitLocalization/Commands.ipp>
#include <clusters/UnitLocalization/Events.ipp>
#include <clusters/UnitLocalization/Structs.ipp>
#include <clusters/UnitTesting/Attributes.ipp>
#include <clusters/UnitTesting/Commands.ipp>
#include <clusters/UnitTesting/Events.ipp>
#include <clusters/UnitTesting/Structs.ipp>
#include <clusters/UserLabel/Attributes.ipp>
#include <clusters/UserLabel/Commands.ipp>
#include <clusters/UserLabel/Events.ipp>
#include <clusters/UserLabel/Structs.ipp>
#include <clusters/ValveConfigurationAndControl/Attributes.ipp>
#include <clusters/ValveConfigurationAndControl/Commands.ipp>
#include <clusters/ValveConfigurationAndControl/Events.ipp>
#include <clusters/ValveConfigurationAndControl/Structs.ipp>
#include <clusters/WakeOnLan/Attributes.ipp>
#include <clusters/WakeOnLan/Commands.ipp>
#include <clusters/WakeOnLan/Events.ipp>
#include <clusters/WakeOnLan/Structs.ipp>
#include <clusters/WaterHeaterManagement/Attributes.ipp>
#include <clusters/WaterHeaterManagement/Commands.ipp>
#include <clusters/WaterHeaterManagement/Events.ipp>
#include <clusters/WaterHeaterManagement/Structs.ipp>
#include <clusters/WaterHeaterMode/Attributes.ipp>
#include <clusters/WaterHeaterMode/Commands.ipp>
#include <clusters/WaterHeaterMode/Events.ipp>
#include <clusters/WaterHeaterMode/Structs.ipp>
#include <clusters/WaterValveData/Attributes.ipp>
#include <clusters/WaterValveData/Commands.ipp>
#include <clusters/WaterValveData/Events.ipp>
#include <clusters/WaterValveData/Structs.ipp>
#include <clusters/WebRTCTransportProvider/Attributes.ipp>
#include <clusters/WebRTCTransportProvider/Commands.ipp>
#include <clusters/WebRTCTransportProvider/Events.ipp>
#include <clusters/WebRTCTransportProvider/Structs.ipp>
#include <clusters/WebRTCTransportRequestor/Attributes.ipp>
#include <clusters/WebRTCTransportRequestor/Commands.ipp>
#include <clusters/WebRTCTransportRequestor/Events.ipp>
#include <clusters/WebRTCTransportRequestor/Structs.ipp>
#include <clusters/WiFiNetworkDiagnostics/Attributes.ipp>
#include <clusters/WiFiNetworkDiagnostics/Commands.ipp>
#include <clusters/WiFiNetworkDiagnostics/Events.ipp>
#include <clusters/WiFiNetworkDiagnostics/Structs.ipp>
#include <clusters/WiFiNetworkManagement/Attributes.ipp>
#include <clusters/WiFiNetworkManagement/Commands.ipp>
#include <clusters/WiFiNetworkManagement/Events.ipp>
#include <clusters/WiFiNetworkManagement/Structs.ipp>
#include <clusters/WindowCovering/Attributes.ipp>
#include <clusters/WindowCovering/Commands.ipp>
#include <clusters/WindowCovering/Events.ipp>
#include <clusters/WindowCovering/Structs.ipp>
#include <clusters/ZoneManagement/Attributes.ipp>
#include <clusters/ZoneManagement/Commands.ipp>
#include <clusters/ZoneManagement/Events.ipp>
#include <clusters/ZoneManagement/Structs.ipp>
#include <clusters/shared/Structs.ipp>

namespace chip {
namespace app {

bool CommandNeedsTimedInvoke(ClusterId aCluster, CommandId aCommand) {
  // Maybe it would be smaller code to codegen a table and walk over it?
  // Not sure.
  switch (aCluster) {
  case Clusters::AdministratorCommissioning::Id: {
    switch (aCommand) {
    case Clusters::AdministratorCommissioning::Commands::
        OpenCommissioningWindow::Id:
    case Clusters::AdministratorCommissioning::Commands::
        OpenBasicCommissioningWindow::Id:
    case Clusters::AdministratorCommissioning::Commands::RevokeCommissioning::
        Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::EnergyEvse::Id: {
    switch (aCommand) {
    case Clusters::EnergyEvse::Commands::Disable::Id:
    case Clusters::EnergyEvse::Commands::EnableCharging::Id:
    case Clusters::EnergyEvse::Commands::EnableDischarging::Id:
    case Clusters::EnergyEvse::Commands::StartDiagnostics::Id:
    case Clusters::EnergyEvse::Commands::SetTargets::Id:
    case Clusters::EnergyEvse::Commands::GetTargets::Id:
    case Clusters::EnergyEvse::Commands::ClearTargets::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::DoorLock::Id: {
    switch (aCommand) {
    case Clusters::DoorLock::Commands::LockDoor::Id:
    case Clusters::DoorLock::Commands::UnlockDoor::Id:
    case Clusters::DoorLock::Commands::UnlockWithTimeout::Id:
    case Clusters::DoorLock::Commands::SetUser::Id:
    case Clusters::DoorLock::Commands::ClearUser::Id:
    case Clusters::DoorLock::Commands::SetCredential::Id:
    case Clusters::DoorLock::Commands::ClearCredential::Id:
    case Clusters::DoorLock::Commands::UnboltDoor::Id:
    case Clusters::DoorLock::Commands::SetAliroReaderConfig::Id:
    case Clusters::DoorLock::Commands::ClearAliroReaderConfig::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::ThreadBorderRouterManagement::Id: {
    switch (aCommand) {
    case Clusters::ThreadBorderRouterManagement::Commands::
        SetActiveDatasetRequest::Id:
    case Clusters::ThreadBorderRouterManagement::Commands::
        SetPendingDatasetRequest::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::ThreadNetworkDirectory::Id: {
    switch (aCommand) {
    case Clusters::ThreadNetworkDirectory::Commands::AddNetwork::Id:
    case Clusters::ThreadNetworkDirectory::Commands::RemoveNetwork::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::AccountLogin::Id: {
    switch (aCommand) {
    case Clusters::AccountLogin::Commands::GetSetupPIN::Id:
    case Clusters::AccountLogin::Commands::Login::Id:
    case Clusters::AccountLogin::Commands::Logout::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::UnitTesting::Id: {
    switch (aCommand) {
    case Clusters::UnitTesting::Commands::TimedInvokeRequest::Id:
    case Clusters::UnitTesting::Commands::TestCheckCommandFlags::Id:
      return true;
    default:
      return false;
    }
  }
  default:
    break;
  }

  return false;
}

bool CommandIsFabricScoped(ClusterId aCluster, CommandId aCommand) {
  // Maybe it would be smaller code to codegen a table and walk over it?
  // Not sure.
  switch (aCluster) {
  case Clusters::Identify::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::Groups::Id: {
    switch (aCommand) {
    case Clusters::Groups::Commands::AddGroup::Id:
      return true;
    case Clusters::Groups::Commands::ViewGroup::Id:
      return true;
    case Clusters::Groups::Commands::GetGroupMembership::Id:
      return true;
    case Clusters::Groups::Commands::RemoveGroup::Id:
      return true;
    case Clusters::Groups::Commands::RemoveAllGroups::Id:
      return true;
    case Clusters::Groups::Commands::AddGroupIfIdentifying::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::OnOff::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::LevelControl::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::AccessControl::Id: {
    switch (aCommand) {
    case Clusters::AccessControl::Commands::ReviewFabricRestrictions::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::Actions::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::BasicInformation::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::OtaSoftwareUpdateProvider::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::OtaSoftwareUpdateRequestor::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::GeneralCommissioning::Id: {
    switch (aCommand) {
    case Clusters::GeneralCommissioning::Commands::CommissioningComplete::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::NetworkCommissioning::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::DiagnosticLogs::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::GeneralDiagnostics::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::SoftwareDiagnostics::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ThreadNetworkDiagnostics::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::WiFiNetworkDiagnostics::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::EthernetNetworkDiagnostics::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::TimeSynchronization::Id: {
    switch (aCommand) {
    case Clusters::TimeSynchronization::Commands::SetTrustedTimeSource::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::BridgedDeviceBasicInformation::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::AdministratorCommissioning::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::OperationalCredentials::Id: {
    switch (aCommand) {
    case Clusters::OperationalCredentials::Commands::UpdateNOC::Id:
      return true;
    case Clusters::OperationalCredentials::Commands::UpdateFabricLabel::Id:
      return true;
    case Clusters::OperationalCredentials::Commands::
        SetVIDVerificationStatement::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::GroupKeyManagement::Id: {
    switch (aCommand) {
    case Clusters::GroupKeyManagement::Commands::KeySetWrite::Id:
      return true;
    case Clusters::GroupKeyManagement::Commands::KeySetRead::Id:
      return true;
    case Clusters::GroupKeyManagement::Commands::KeySetRemove::Id:
      return true;
    case Clusters::GroupKeyManagement::Commands::KeySetReadAllIndices::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::IcdManagement::Id: {
    switch (aCommand) {
    case Clusters::IcdManagement::Commands::RegisterClient::Id:
      return true;
    case Clusters::IcdManagement::Commands::UnregisterClient::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::Timer::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::OvenCavityOperationalState::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::OvenMode::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ModeSelect::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::LaundryWasherMode::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::RefrigeratorAndTemperatureControlledCabinetMode::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::RvcRunMode::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::RvcCleanMode::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::TemperatureControl::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::DishwasherMode::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::SmokeCoAlarm::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::DishwasherAlarm::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::MicrowaveOvenControl::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::OperationalState::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::RvcOperationalState::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ScenesManagement::Id: {
    switch (aCommand) {
    case Clusters::ScenesManagement::Commands::AddScene::Id:
      return true;
    case Clusters::ScenesManagement::Commands::ViewScene::Id:
      return true;
    case Clusters::ScenesManagement::Commands::RemoveScene::Id:
      return true;
    case Clusters::ScenesManagement::Commands::RemoveAllScenes::Id:
      return true;
    case Clusters::ScenesManagement::Commands::StoreScene::Id:
      return true;
    case Clusters::ScenesManagement::Commands::RecallScene::Id:
      return true;
    case Clusters::ScenesManagement::Commands::GetSceneMembership::Id:
      return true;
    case Clusters::ScenesManagement::Commands::CopyScene::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::HepaFilterMonitoring::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ActivatedCarbonFilterMonitoring::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::BooleanStateConfiguration::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ValveConfigurationAndControl::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::WaterHeaterManagement::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::CommodityPrice::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::Messages::Id: {
    switch (aCommand) {
    case Clusters::Messages::Commands::PresentMessagesRequest::Id:
      return true;
    case Clusters::Messages::Commands::CancelMessagesRequest::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::DeviceEnergyManagement::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::EnergyEvse::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::EnergyEvseMode::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::WaterHeaterMode::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::DeviceEnergyManagementMode::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::DoorLock::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::WindowCovering::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ClosureControl::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ClosureDimension::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ServiceArea::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::Thermostat::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::FanControl::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ColorControl::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::WiFiNetworkManagement::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ThreadBorderRouterManagement::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ThreadNetworkDirectory::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::Channel::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::TargetNavigator::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::MediaPlayback::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::MediaInput::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::LowPower::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::KeypadInput::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ContentLauncher::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::AudioOutput::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ApplicationLauncher::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::AccountLogin::Id: {
    switch (aCommand) {
    case Clusters::AccountLogin::Commands::GetSetupPIN::Id:
      return true;
    case Clusters::AccountLogin::Commands::GetSetupPINResponse::Id:
      return true;
    case Clusters::AccountLogin::Commands::Login::Id:
      return true;
    case Clusters::AccountLogin::Commands::Logout::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::ContentControl::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ContentAppObserver::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::ZoneManagement::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::CameraAvStreamManagement::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::CameraAvSettingsUserLevelManagement::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::WebRTCTransportProvider::Id: {
    switch (aCommand) {
    case Clusters::WebRTCTransportProvider::Commands::SolicitOffer::Id:
      return true;
    case Clusters::WebRTCTransportProvider::Commands::ProvideOffer::Id:
      return true;
    case Clusters::WebRTCTransportProvider::Commands::ProvideAnswer::Id:
      return true;
    case Clusters::WebRTCTransportProvider::Commands::ProvideICECandidates::Id:
      return true;
    case Clusters::WebRTCTransportProvider::Commands::EndSession::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::WebRTCTransportRequestor::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::PushAvStreamTransport::Id: {
    switch (aCommand) {
    case Clusters::PushAvStreamTransport::Commands::AllocatePushTransport::Id:
      return true;
    case Clusters::PushAvStreamTransport::Commands::DeallocatePushTransport::Id:
      return true;
    case Clusters::PushAvStreamTransport::Commands::ModifyPushTransport::Id:
      return true;
    case Clusters::PushAvStreamTransport::Commands::SetTransportStatus::Id:
      return true;
    case Clusters::PushAvStreamTransport::Commands::ManuallyTriggerTransport::
        Id:
      return true;
    case Clusters::PushAvStreamTransport::Commands::FindTransport::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::Chime::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::CommodityTariff::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::CommissionerControl::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::JointFabricDatastore::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::JointFabricAdministrator::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::TlsCertificateManagement::Id: {
    switch (aCommand) {
    case Clusters::TlsCertificateManagement::Commands::
        ProvisionRootCertificate::Id:
      return true;
    case Clusters::TlsCertificateManagement::Commands::FindRootCertificate::Id:
      return true;
    case Clusters::TlsCertificateManagement::Commands::LookupRootCertificate::
        Id:
      return true;
    case Clusters::TlsCertificateManagement::Commands::RemoveRootCertificate::
        Id:
      return true;
    case Clusters::TlsCertificateManagement::Commands::TLSClientCSR::Id:
      return true;
    case Clusters::TlsCertificateManagement::Commands::
        ProvisionClientCertificate::Id:
      return true;
    case Clusters::TlsCertificateManagement::Commands::FindClientCertificate::
        Id:
      return true;
    case Clusters::TlsCertificateManagement::Commands::LookupClientCertificate::
        Id:
      return true;
    case Clusters::TlsCertificateManagement::Commands::RemoveClientCertificate::
        Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::TlsClientManagement::Id: {
    switch (aCommand) {
    case Clusters::TlsClientManagement::Commands::ProvisionEndpoint::Id:
      return true;
    case Clusters::TlsClientManagement::Commands::FindEndpoint::Id:
      return true;
    case Clusters::TlsClientManagement::Commands::RemoveEndpoint::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::WaterValveData::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::UnitTesting::Id: {
    switch (aCommand) {
    case Clusters::UnitTesting::Commands::TestCheckCommandFlags::Id:
      return true;
    default:
      return false;
    }
  }
  case Clusters::FaultInjection::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  case Clusters::SampleMei::Id: {
    switch (aCommand) {
    default:
      return false;
    }
  }
  }
  return false;
}

bool CommandHasLargePayload(ClusterId aCluster, CommandId aCommand) {
  if ((aCluster == Clusters::CommodityPrice::Id) &&
      (aCommand ==
       Clusters::CommodityPrice::Commands::GetDetailedForecastRequest::Id)) {
    return true;
  }
  if ((aCluster == Clusters::CommodityPrice::Id) &&
      (aCommand ==
       Clusters::CommodityPrice::Commands::GetDetailedForecastResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::CameraAvStreamManagement::Id) &&
      (aCommand ==
       Clusters::CameraAvStreamManagement::Commands::CaptureSnapshot::Id)) {
    return true;
  }
  if ((aCluster == Clusters::CameraAvStreamManagement::Id) &&
      (aCommand == Clusters::CameraAvStreamManagement::Commands::
                       CaptureSnapshotResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportProvider::Id) &&
      (aCommand ==
       Clusters::WebRTCTransportProvider::Commands::SolicitOffer::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportProvider::Id) &&
      (aCommand ==
       Clusters::WebRTCTransportProvider::Commands::SolicitOfferResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportProvider::Id) &&
      (aCommand ==
       Clusters::WebRTCTransportProvider::Commands::ProvideOffer::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportProvider::Id) &&
      (aCommand ==
       Clusters::WebRTCTransportProvider::Commands::ProvideOfferResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportProvider::Id) &&
      (aCommand ==
       Clusters::WebRTCTransportProvider::Commands::ProvideAnswer::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportProvider::Id) &&
      (aCommand ==
       Clusters::WebRTCTransportProvider::Commands::ProvideICECandidates::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportProvider::Id) &&
      (aCommand ==
       Clusters::WebRTCTransportProvider::Commands::EndSession::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportRequestor::Id) &&
      (aCommand == Clusters::WebRTCTransportRequestor::Commands::Offer::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportRequestor::Id) &&
      (aCommand == Clusters::WebRTCTransportRequestor::Commands::Answer::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportRequestor::Id) &&
      (aCommand ==
       Clusters::WebRTCTransportRequestor::Commands::ICECandidates::Id)) {
    return true;
  }
  if ((aCluster == Clusters::WebRTCTransportRequestor::Id) &&
      (aCommand == Clusters::WebRTCTransportRequestor::Commands::End::Id)) {
    return true;
  }
  if ((aCluster == Clusters::PushAvStreamTransport::Id) &&
      (aCommand ==
       Clusters::PushAvStreamTransport::Commands::AllocatePushTransport::Id)) {
    return true;
  }
  if ((aCluster == Clusters::PushAvStreamTransport::Id) &&
      (aCommand == Clusters::PushAvStreamTransport::Commands::
                       AllocatePushTransportResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::PushAvStreamTransport::Id) &&
      (aCommand ==
       Clusters::PushAvStreamTransport::Commands::FindTransport::Id)) {
    return true;
  }
  if ((aCluster == Clusters::PushAvStreamTransport::Id) &&
      (aCommand ==
       Clusters::PushAvStreamTransport::Commands::FindTransportResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       ProvisionRootCertificate::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       ProvisionRootCertificateResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand ==
       Clusters::TlsCertificateManagement::Commands::FindRootCertificate::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       FindRootCertificateResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       LookupRootCertificate::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       LookupRootCertificateResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       RemoveRootCertificate::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand ==
       Clusters::TlsCertificateManagement::Commands::TLSClientCSR::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       TLSClientCSRResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       ProvisionClientCertificate::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       FindClientCertificate::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       FindClientCertificateResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       LookupClientCertificate::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       LookupClientCertificateResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsCertificateManagement::Id) &&
      (aCommand == Clusters::TlsCertificateManagement::Commands::
                       RemoveClientCertificate::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsClientManagement::Id) &&
      (aCommand ==
       Clusters::TlsClientManagement::Commands::ProvisionEndpoint::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsClientManagement::Id) &&
      (aCommand == Clusters::TlsClientManagement::Commands::
                       ProvisionEndpointResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsClientManagement::Id) &&
      (aCommand == Clusters::TlsClientManagement::Commands::FindEndpoint::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsClientManagement::Id) &&
      (aCommand ==
       Clusters::TlsClientManagement::Commands::FindEndpointResponse::Id)) {
    return true;
  }
  if ((aCluster == Clusters::TlsClientManagement::Id) &&
      (aCommand ==
       Clusters::TlsClientManagement::Commands::RemoveEndpoint::Id)) {
    return true;
  }
  if ((aCluster == Clusters::UnitTesting::Id) &&
      (aCommand ==
       Clusters::UnitTesting::Commands::TestCheckCommandFlags::Id)) {
    return true;
  }
  return false;
}

} // namespace app
} // namespace chip
