-- Copyright (c) 2026 Huawei Technologies Co., Ltd.
-- openUBMC is licensed under Mulan PSL v2.
-- You can use this software according to the terms and conditions of the Mulan PSL v2.
-- You may obtain a copy of Mulan PSL v2 at:
--          http://license.coscl.org.cn/MulanPSL2
-- THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
-- EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
-- MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
-- See the Mulan PSL v2 for more details.
local validate = require 'mc.validate'
local utils = require 'mc.utils'

local MSuperPodLabel = {}

---@class MSuperPodLabel.DefaultUBMDeployMode
---@field DefaultUBMDeployMode integer
local TDefaultUBMDeployMode = {}
TDefaultUBMDeployMode.__index = TDefaultUBMDeployMode
TDefaultUBMDeployMode.group = {}

local function TDefaultUBMDeployMode_from_obj(obj)
    return setmetatable(obj, TDefaultUBMDeployMode)
end

function TDefaultUBMDeployMode.new(DefaultUBMDeployMode)
    return TDefaultUBMDeployMode_from_obj({DefaultUBMDeployMode = DefaultUBMDeployMode})
end
---@param obj MSuperPodLabel.DefaultUBMDeployMode
function TDefaultUBMDeployMode:init_from_obj(obj)
    self.DefaultUBMDeployMode = obj.DefaultUBMDeployMode
end

function TDefaultUBMDeployMode:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TDefaultUBMDeployMode.group)
end

TDefaultUBMDeployMode.from_obj = TDefaultUBMDeployMode_from_obj

TDefaultUBMDeployMode.proto_property = {'DefaultUBMDeployMode'}

TDefaultUBMDeployMode.default = {0}

TDefaultUBMDeployMode.struct = {{name = 'DefaultUBMDeployMode', is_array = false, struct = nil}}

function TDefaultUBMDeployMode:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'DefaultUBMDeployMode', self.DefaultUBMDeployMode, 'uint8', false, errs, need_convert)

    TDefaultUBMDeployMode:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TDefaultUBMDeployMode.proto_property, errs, need_convert)
    return self
end

function TDefaultUBMDeployMode:unpack(_)
    return self.DefaultUBMDeployMode
end

MSuperPodLabel.DefaultUBMDeployMode = TDefaultUBMDeployMode

---@class MSuperPodLabel.DefaultNPUBootOption
---@field DefaultNPUBootOption integer
local TDefaultNPUBootOption = {}
TDefaultNPUBootOption.__index = TDefaultNPUBootOption
TDefaultNPUBootOption.group = {}

local function TDefaultNPUBootOption_from_obj(obj)
    return setmetatable(obj, TDefaultNPUBootOption)
end

function TDefaultNPUBootOption.new(DefaultNPUBootOption)
    return TDefaultNPUBootOption_from_obj({DefaultNPUBootOption = DefaultNPUBootOption})
end
---@param obj MSuperPodLabel.DefaultNPUBootOption
function TDefaultNPUBootOption:init_from_obj(obj)
    self.DefaultNPUBootOption = obj.DefaultNPUBootOption
end

function TDefaultNPUBootOption:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TDefaultNPUBootOption.group)
end

TDefaultNPUBootOption.from_obj = TDefaultNPUBootOption_from_obj

TDefaultNPUBootOption.proto_property = {'DefaultNPUBootOption'}

TDefaultNPUBootOption.default = {0}

TDefaultNPUBootOption.struct = {{name = 'DefaultNPUBootOption', is_array = false, struct = nil}}

function TDefaultNPUBootOption:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'DefaultNPUBootOption', self.DefaultNPUBootOption, 'uint8', false, errs, need_convert)

    TDefaultNPUBootOption:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TDefaultNPUBootOption.proto_property, errs, need_convert)
    return self
end

function TDefaultNPUBootOption:unpack(_)
    return self.DefaultNPUBootOption
end

MSuperPodLabel.DefaultNPUBootOption = TDefaultNPUBootOption

---@class MSuperPodLabel.DefaultPresentDPUCount
---@field DefaultPresentDPUCount integer
local TDefaultPresentDPUCount = {}
TDefaultPresentDPUCount.__index = TDefaultPresentDPUCount
TDefaultPresentDPUCount.group = {}

local function TDefaultPresentDPUCount_from_obj(obj)
    return setmetatable(obj, TDefaultPresentDPUCount)
end

function TDefaultPresentDPUCount.new(DefaultPresentDPUCount)
    return TDefaultPresentDPUCount_from_obj({DefaultPresentDPUCount = DefaultPresentDPUCount})
end
---@param obj MSuperPodLabel.DefaultPresentDPUCount
function TDefaultPresentDPUCount:init_from_obj(obj)
    self.DefaultPresentDPUCount = obj.DefaultPresentDPUCount
end

function TDefaultPresentDPUCount:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TDefaultPresentDPUCount.group)
end

TDefaultPresentDPUCount.from_obj = TDefaultPresentDPUCount_from_obj

TDefaultPresentDPUCount.proto_property = {'DefaultPresentDPUCount'}

TDefaultPresentDPUCount.default = {0}

TDefaultPresentDPUCount.struct = {{name = 'DefaultPresentDPUCount', is_array = false, struct = nil}}

function TDefaultPresentDPUCount:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'DefaultPresentDPUCount', self.DefaultPresentDPUCount, 'uint8', false, errs,
        need_convert)

    TDefaultPresentDPUCount:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TDefaultPresentDPUCount.proto_property, errs, need_convert)
    return self
end

function TDefaultPresentDPUCount:unpack(_)
    return self.DefaultPresentDPUCount
end

MSuperPodLabel.DefaultPresentDPUCount = TDefaultPresentDPUCount

---@class MSuperPodLabel.DefaultInterconType
---@field DefaultInterconType integer
local TDefaultInterconType = {}
TDefaultInterconType.__index = TDefaultInterconType
TDefaultInterconType.group = {}

local function TDefaultInterconType_from_obj(obj)
    return setmetatable(obj, TDefaultInterconType)
end

function TDefaultInterconType.new(DefaultInterconType)
    return TDefaultInterconType_from_obj({DefaultInterconType = DefaultInterconType})
end
---@param obj MSuperPodLabel.DefaultInterconType
function TDefaultInterconType:init_from_obj(obj)
    self.DefaultInterconType = obj.DefaultInterconType
end

function TDefaultInterconType:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TDefaultInterconType.group)
end

TDefaultInterconType.from_obj = TDefaultInterconType_from_obj

TDefaultInterconType.proto_property = {'DefaultInterconType'}

TDefaultInterconType.default = {0}

TDefaultInterconType.struct = {{name = 'DefaultInterconType', is_array = false, struct = nil}}

function TDefaultInterconType:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'DefaultInterconType', self.DefaultInterconType, 'uint8', false, errs, need_convert)

    TDefaultInterconType:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TDefaultInterconType.proto_property, errs, need_convert)
    return self
end

function TDefaultInterconType:unpack(_)
    return self.DefaultInterconType
end

MSuperPodLabel.DefaultInterconType = TDefaultInterconType

---@class MSuperPodLabel.DefaultTopologyType
---@field DefaultTopologyType integer
local TDefaultTopologyType = {}
TDefaultTopologyType.__index = TDefaultTopologyType
TDefaultTopologyType.group = {}

local function TDefaultTopologyType_from_obj(obj)
    return setmetatable(obj, TDefaultTopologyType)
end

function TDefaultTopologyType.new(DefaultTopologyType)
    return TDefaultTopologyType_from_obj({DefaultTopologyType = DefaultTopologyType})
end
---@param obj MSuperPodLabel.DefaultTopologyType
function TDefaultTopologyType:init_from_obj(obj)
    self.DefaultTopologyType = obj.DefaultTopologyType
end

function TDefaultTopologyType:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TDefaultTopologyType.group)
end

TDefaultTopologyType.from_obj = TDefaultTopologyType_from_obj

TDefaultTopologyType.proto_property = {'DefaultTopologyType'}

TDefaultTopologyType.default = {0}

TDefaultTopologyType.struct = {{name = 'DefaultTopologyType', is_array = false, struct = nil}}

function TDefaultTopologyType:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'DefaultTopologyType', self.DefaultTopologyType, 'uint8', false, errs, need_convert)

    TDefaultTopologyType:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TDefaultTopologyType.proto_property, errs, need_convert)
    return self
end

function TDefaultTopologyType:unpack(_)
    return self.DefaultTopologyType
end

MSuperPodLabel.DefaultTopologyType = TDefaultTopologyType

---@class MSuperPodLabel.DefaultChassisId
---@field DefaultChassisId integer
local TDefaultChassisId = {}
TDefaultChassisId.__index = TDefaultChassisId
TDefaultChassisId.group = {}

local function TDefaultChassisId_from_obj(obj)
    return setmetatable(obj, TDefaultChassisId)
end

function TDefaultChassisId.new(DefaultChassisId)
    return TDefaultChassisId_from_obj({DefaultChassisId = DefaultChassisId})
end
---@param obj MSuperPodLabel.DefaultChassisId
function TDefaultChassisId:init_from_obj(obj)
    self.DefaultChassisId = obj.DefaultChassisId
end

function TDefaultChassisId:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TDefaultChassisId.group)
end

TDefaultChassisId.from_obj = TDefaultChassisId_from_obj

TDefaultChassisId.proto_property = {'DefaultChassisId'}

TDefaultChassisId.default = {0}

TDefaultChassisId.struct = {{name = 'DefaultChassisId', is_array = false, struct = nil}}

function TDefaultChassisId:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'DefaultChassisId', self.DefaultChassisId, 'uint16', false, errs, need_convert)

    TDefaultChassisId:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TDefaultChassisId.proto_property, errs, need_convert)
    return self
end

function TDefaultChassisId:unpack(_)
    return self.DefaultChassisId
end

MSuperPodLabel.DefaultChassisId = TDefaultChassisId

---@class MSuperPodLabel.UBMDeployModeReg
---@field UBMDeployModeReg integer
local TUBMDeployModeReg = {}
TUBMDeployModeReg.__index = TUBMDeployModeReg
TUBMDeployModeReg.group = {}

local function TUBMDeployModeReg_from_obj(obj)
    return setmetatable(obj, TUBMDeployModeReg)
end

function TUBMDeployModeReg.new(UBMDeployModeReg)
    return TUBMDeployModeReg_from_obj({UBMDeployModeReg = UBMDeployModeReg})
end
---@param obj MSuperPodLabel.UBMDeployModeReg
function TUBMDeployModeReg:init_from_obj(obj)
    self.UBMDeployModeReg = obj.UBMDeployModeReg
end

function TUBMDeployModeReg:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TUBMDeployModeReg.group)
end

TUBMDeployModeReg.from_obj = TUBMDeployModeReg_from_obj

TUBMDeployModeReg.proto_property = {'UBMDeployModeReg'}

TUBMDeployModeReg.default = {0}

TUBMDeployModeReg.struct = {{name = 'UBMDeployModeReg', is_array = false, struct = nil}}

function TUBMDeployModeReg:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'UBMDeployModeReg', self.UBMDeployModeReg, 'uint8', false, errs, need_convert)

    TUBMDeployModeReg:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TUBMDeployModeReg.proto_property, errs, need_convert)
    return self
end

function TUBMDeployModeReg:unpack(_)
    return self.UBMDeployModeReg
end

MSuperPodLabel.UBMDeployModeReg = TUBMDeployModeReg

---@class MSuperPodLabel.NPUBootOptionReg
---@field NPUBootOptionReg integer
local TNPUBootOptionReg = {}
TNPUBootOptionReg.__index = TNPUBootOptionReg
TNPUBootOptionReg.group = {}

local function TNPUBootOptionReg_from_obj(obj)
    return setmetatable(obj, TNPUBootOptionReg)
end

function TNPUBootOptionReg.new(NPUBootOptionReg)
    return TNPUBootOptionReg_from_obj({NPUBootOptionReg = NPUBootOptionReg})
end
---@param obj MSuperPodLabel.NPUBootOptionReg
function TNPUBootOptionReg:init_from_obj(obj)
    self.NPUBootOptionReg = obj.NPUBootOptionReg
end

function TNPUBootOptionReg:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TNPUBootOptionReg.group)
end

TNPUBootOptionReg.from_obj = TNPUBootOptionReg_from_obj

TNPUBootOptionReg.proto_property = {'NPUBootOptionReg'}

TNPUBootOptionReg.default = {0}

TNPUBootOptionReg.struct = {{name = 'NPUBootOptionReg', is_array = false, struct = nil}}

function TNPUBootOptionReg:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'NPUBootOptionReg', self.NPUBootOptionReg, 'uint8', false, errs, need_convert)

    TNPUBootOptionReg:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TNPUBootOptionReg.proto_property, errs, need_convert)
    return self
end

function TNPUBootOptionReg:unpack(_)
    return self.NPUBootOptionReg
end

MSuperPodLabel.NPUBootOptionReg = TNPUBootOptionReg

---@class MSuperPodLabel.PresentDPUCountReg
---@field PresentDPUCountReg integer
local TPresentDPUCountReg = {}
TPresentDPUCountReg.__index = TPresentDPUCountReg
TPresentDPUCountReg.group = {}

local function TPresentDPUCountReg_from_obj(obj)
    return setmetatable(obj, TPresentDPUCountReg)
end

function TPresentDPUCountReg.new(PresentDPUCountReg)
    return TPresentDPUCountReg_from_obj({PresentDPUCountReg = PresentDPUCountReg})
end
---@param obj MSuperPodLabel.PresentDPUCountReg
function TPresentDPUCountReg:init_from_obj(obj)
    self.PresentDPUCountReg = obj.PresentDPUCountReg
end

function TPresentDPUCountReg:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TPresentDPUCountReg.group)
end

TPresentDPUCountReg.from_obj = TPresentDPUCountReg_from_obj

TPresentDPUCountReg.proto_property = {'PresentDPUCountReg'}

TPresentDPUCountReg.default = {0}

TPresentDPUCountReg.struct = {{name = 'PresentDPUCountReg', is_array = false, struct = nil}}

function TPresentDPUCountReg:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'PresentDPUCountReg', self.PresentDPUCountReg, 'uint8', false, errs, need_convert)

    TPresentDPUCountReg:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TPresentDPUCountReg.proto_property, errs, need_convert)
    return self
end

function TPresentDPUCountReg:unpack(_)
    return self.PresentDPUCountReg
end

MSuperPodLabel.PresentDPUCountReg = TPresentDPUCountReg

---@class MSuperPodLabel.InterconTypeReg
---@field InterconTypeReg integer
local TInterconTypeReg = {}
TInterconTypeReg.__index = TInterconTypeReg
TInterconTypeReg.group = {}

local function TInterconTypeReg_from_obj(obj)
    return setmetatable(obj, TInterconTypeReg)
end

function TInterconTypeReg.new(InterconTypeReg)
    return TInterconTypeReg_from_obj({InterconTypeReg = InterconTypeReg})
end
---@param obj MSuperPodLabel.InterconTypeReg
function TInterconTypeReg:init_from_obj(obj)
    self.InterconTypeReg = obj.InterconTypeReg
end

function TInterconTypeReg:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TInterconTypeReg.group)
end

TInterconTypeReg.from_obj = TInterconTypeReg_from_obj

TInterconTypeReg.proto_property = {'InterconTypeReg'}

TInterconTypeReg.default = {0}

TInterconTypeReg.struct = {{name = 'InterconTypeReg', is_array = false, struct = nil}}

function TInterconTypeReg:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'InterconTypeReg', self.InterconTypeReg, 'uint8', false, errs, need_convert)

    TInterconTypeReg:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TInterconTypeReg.proto_property, errs, need_convert)
    return self
end

function TInterconTypeReg:unpack(_)
    return self.InterconTypeReg
end

MSuperPodLabel.InterconTypeReg = TInterconTypeReg

---@class MSuperPodLabel.TopologyTypeReg
---@field TopologyTypeReg integer
local TTopologyTypeReg = {}
TTopologyTypeReg.__index = TTopologyTypeReg
TTopologyTypeReg.group = {}

local function TTopologyTypeReg_from_obj(obj)
    return setmetatable(obj, TTopologyTypeReg)
end

function TTopologyTypeReg.new(TopologyTypeReg)
    return TTopologyTypeReg_from_obj({TopologyTypeReg = TopologyTypeReg})
end
---@param obj MSuperPodLabel.TopologyTypeReg
function TTopologyTypeReg:init_from_obj(obj)
    self.TopologyTypeReg = obj.TopologyTypeReg
end

function TTopologyTypeReg:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TTopologyTypeReg.group)
end

TTopologyTypeReg.from_obj = TTopologyTypeReg_from_obj

TTopologyTypeReg.proto_property = {'TopologyTypeReg'}

TTopologyTypeReg.default = {0}

TTopologyTypeReg.struct = {{name = 'TopologyTypeReg', is_array = false, struct = nil}}

function TTopologyTypeReg:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'TopologyTypeReg', self.TopologyTypeReg, 'uint8', false, errs, need_convert)

    TTopologyTypeReg:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TTopologyTypeReg.proto_property, errs, need_convert)
    return self
end

function TTopologyTypeReg:unpack(_)
    return self.TopologyTypeReg
end

MSuperPodLabel.TopologyTypeReg = TTopologyTypeReg

---@class MSuperPodLabel.ChassisIdReg
---@field ChassisIdReg integer
local TChassisIdReg = {}
TChassisIdReg.__index = TChassisIdReg
TChassisIdReg.group = {}

local function TChassisIdReg_from_obj(obj)
    return setmetatable(obj, TChassisIdReg)
end

function TChassisIdReg.new(ChassisIdReg)
    return TChassisIdReg_from_obj({ChassisIdReg = ChassisIdReg})
end
---@param obj MSuperPodLabel.ChassisIdReg
function TChassisIdReg:init_from_obj(obj)
    self.ChassisIdReg = obj.ChassisIdReg
end

function TChassisIdReg:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TChassisIdReg.group)
end

TChassisIdReg.from_obj = TChassisIdReg_from_obj

TChassisIdReg.proto_property = {'ChassisIdReg'}

TChassisIdReg.default = {0}

TChassisIdReg.struct = {{name = 'ChassisIdReg', is_array = false, struct = nil}}

function TChassisIdReg:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'ChassisIdReg', self.ChassisIdReg, 'uint16', false, errs, need_convert)

    TChassisIdReg:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TChassisIdReg.proto_property, errs, need_convert)
    return self
end

function TChassisIdReg:unpack(_)
    return self.ChassisIdReg
end

MSuperPodLabel.ChassisIdReg = TChassisIdReg

---@class MSuperPodLabel.ConfigurationCompletedReg
---@field ConfigurationCompletedReg integer
local TConfigurationCompletedReg = {}
TConfigurationCompletedReg.__index = TConfigurationCompletedReg
TConfigurationCompletedReg.group = {}

local function TConfigurationCompletedReg_from_obj(obj)
    return setmetatable(obj, TConfigurationCompletedReg)
end

function TConfigurationCompletedReg.new(ConfigurationCompletedReg)
    return TConfigurationCompletedReg_from_obj({ConfigurationCompletedReg = ConfigurationCompletedReg})
end
---@param obj MSuperPodLabel.ConfigurationCompletedReg
function TConfigurationCompletedReg:init_from_obj(obj)
    self.ConfigurationCompletedReg = obj.ConfigurationCompletedReg
end

function TConfigurationCompletedReg:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TConfigurationCompletedReg.group)
end

TConfigurationCompletedReg.from_obj = TConfigurationCompletedReg_from_obj

TConfigurationCompletedReg.proto_property = {'ConfigurationCompletedReg'}

TConfigurationCompletedReg.default = {0}

TConfigurationCompletedReg.struct = {{name = 'ConfigurationCompletedReg', is_array = false, struct = nil}}

function TConfigurationCompletedReg:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'ConfigurationCompletedReg', self.ConfigurationCompletedReg, 'uint16', false, errs,
        need_convert)

    TConfigurationCompletedReg:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TConfigurationCompletedReg.proto_property, errs, need_convert)
    return self
end

function TConfigurationCompletedReg:unpack(_)
    return self.ConfigurationCompletedReg
end

MSuperPodLabel.ConfigurationCompletedReg = TConfigurationCompletedReg

---@class MSuperPodLabel.ConfigurationCompletedFlag
---@field ConfigurationCompletedFlag integer
local TConfigurationCompletedFlag = {}
TConfigurationCompletedFlag.__index = TConfigurationCompletedFlag
TConfigurationCompletedFlag.group = {}

local function TConfigurationCompletedFlag_from_obj(obj)
    return setmetatable(obj, TConfigurationCompletedFlag)
end

function TConfigurationCompletedFlag.new(ConfigurationCompletedFlag)
    return TConfigurationCompletedFlag_from_obj({ConfigurationCompletedFlag = ConfigurationCompletedFlag})
end
---@param obj MSuperPodLabel.ConfigurationCompletedFlag
function TConfigurationCompletedFlag:init_from_obj(obj)
    self.ConfigurationCompletedFlag = obj.ConfigurationCompletedFlag
end

function TConfigurationCompletedFlag:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TConfigurationCompletedFlag.group)
end

TConfigurationCompletedFlag.from_obj = TConfigurationCompletedFlag_from_obj

TConfigurationCompletedFlag.proto_property = {'ConfigurationCompletedFlag'}

TConfigurationCompletedFlag.default = {0}

TConfigurationCompletedFlag.struct = {{name = 'ConfigurationCompletedFlag', is_array = false, struct = nil}}

function TConfigurationCompletedFlag:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'ConfigurationCompletedFlag', self.ConfigurationCompletedFlag, 'uint16', false, errs,
        need_convert)

    TConfigurationCompletedFlag:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TConfigurationCompletedFlag.proto_property, errs, need_convert)
    return self
end

function TConfigurationCompletedFlag:unpack(_)
    return self.ConfigurationCompletedFlag
end

MSuperPodLabel.ConfigurationCompletedFlag = TConfigurationCompletedFlag

---@class MSuperPodLabel.CrcCalcParams
---@field CrcCalcParams string[]
local TCrcCalcParams = {}
TCrcCalcParams.__index = TCrcCalcParams
TCrcCalcParams.group = {}

local function TCrcCalcParams_from_obj(obj)
    return setmetatable(obj, TCrcCalcParams)
end

function TCrcCalcParams.new(CrcCalcParams)
    return TCrcCalcParams_from_obj({
        CrcCalcParams = CrcCalcParams or {[=[ServerIndex]=], [=[SuperPodSize]=], [=[SuperPodId]=]}
    })
end
---@param obj MSuperPodLabel.CrcCalcParams
function TCrcCalcParams:init_from_obj(obj)
    self.CrcCalcParams = obj.CrcCalcParams or {[=[ServerIndex]=], [=[SuperPodSize]=], [=[SuperPodId]=]}
end

function TCrcCalcParams:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TCrcCalcParams.group)
end

TCrcCalcParams.from_obj = TCrcCalcParams_from_obj

TCrcCalcParams.proto_property = {'CrcCalcParams'}

TCrcCalcParams.default = {{}}

TCrcCalcParams.struct = {{name = 'CrcCalcParams', is_array = true, struct = nil}}

function TCrcCalcParams:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.OptionalArray(prefix .. 'CrcCalcParams', self.CrcCalcParams, 'string', false, errs, need_convert)

    TCrcCalcParams:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TCrcCalcParams.proto_property, errs, need_convert)
    return self
end

function TCrcCalcParams:unpack(_)
    return self.CrcCalcParams
end

MSuperPodLabel.CrcCalcParams = TCrcCalcParams

---@class MSuperPodLabel.Crc16
---@field Crc16 integer
local TCrc16 = {}
TCrc16.__index = TCrc16
TCrc16.group = {}

local function TCrc16_from_obj(obj)
    return setmetatable(obj, TCrc16)
end

function TCrc16.new(Crc16)
    return TCrc16_from_obj({Crc16 = Crc16 or 0})
end
---@param obj MSuperPodLabel.Crc16
function TCrc16:init_from_obj(obj)
    self.Crc16 = obj.Crc16 or 0
end

function TCrc16:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TCrc16.group)
end

TCrc16.from_obj = TCrc16_from_obj

TCrc16.proto_property = {'Crc16'}

TCrc16.default = {0}

TCrc16.struct = {{name = 'Crc16', is_array = false, struct = nil}}

function TCrc16:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'Crc16', self.Crc16, 'uint16', false, errs, need_convert)

    TCrc16:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TCrc16.proto_property, errs, need_convert)
    return self
end

function TCrc16:unpack(_)
    return self.Crc16
end

MSuperPodLabel.Crc16 = TCrc16

---@class MSuperPodLabel.DefaultSuperPodSize
---@field DefaultSuperPodSize integer
local TDefaultSuperPodSize = {}
TDefaultSuperPodSize.__index = TDefaultSuperPodSize
TDefaultSuperPodSize.group = {}

local function TDefaultSuperPodSize_from_obj(obj)
    return setmetatable(obj, TDefaultSuperPodSize)
end

function TDefaultSuperPodSize.new(DefaultSuperPodSize)
    return TDefaultSuperPodSize_from_obj({DefaultSuperPodSize = DefaultSuperPodSize or 384})
end
---@param obj MSuperPodLabel.DefaultSuperPodSize
function TDefaultSuperPodSize:init_from_obj(obj)
    self.DefaultSuperPodSize = obj.DefaultSuperPodSize or 384
end

function TDefaultSuperPodSize:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TDefaultSuperPodSize.group)
end

TDefaultSuperPodSize.from_obj = TDefaultSuperPodSize_from_obj

TDefaultSuperPodSize.proto_property = {'DefaultSuperPodSize'}

TDefaultSuperPodSize.default = {0}

TDefaultSuperPodSize.struct = {{name = 'DefaultSuperPodSize', is_array = false, struct = nil}}

function TDefaultSuperPodSize:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'DefaultSuperPodSize', self.DefaultSuperPodSize, 'uint16', false, errs, need_convert)

    TDefaultSuperPodSize:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TDefaultSuperPodSize.proto_property, errs, need_convert)
    return self
end

function TDefaultSuperPodSize:unpack(_)
    return self.DefaultSuperPodSize
end

MSuperPodLabel.DefaultSuperPodSize = TDefaultSuperPodSize

---@class MSuperPodLabel.DefaultServerIndex
---@field DefaultServerIndex integer
local TDefaultServerIndex = {}
TDefaultServerIndex.__index = TDefaultServerIndex
TDefaultServerIndex.group = {}

local function TDefaultServerIndex_from_obj(obj)
    return setmetatable(obj, TDefaultServerIndex)
end

function TDefaultServerIndex.new(DefaultServerIndex)
    return TDefaultServerIndex_from_obj({DefaultServerIndex = DefaultServerIndex or 65535})
end
---@param obj MSuperPodLabel.DefaultServerIndex
function TDefaultServerIndex:init_from_obj(obj)
    self.DefaultServerIndex = obj.DefaultServerIndex or 65535
end

function TDefaultServerIndex:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TDefaultServerIndex.group)
end

TDefaultServerIndex.from_obj = TDefaultServerIndex_from_obj

TDefaultServerIndex.proto_property = {'DefaultServerIndex'}

TDefaultServerIndex.default = {0}

TDefaultServerIndex.struct = {{name = 'DefaultServerIndex', is_array = false, struct = nil}}

function TDefaultServerIndex:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'DefaultServerIndex', self.DefaultServerIndex, 'uint16', false, errs, need_convert)

    TDefaultServerIndex:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TDefaultServerIndex.proto_property, errs, need_convert)
    return self
end

function TDefaultServerIndex:unpack(_)
    return self.DefaultServerIndex
end

MSuperPodLabel.DefaultServerIndex = TDefaultServerIndex

---@class MSuperPodLabel.DefaultSuperPodId
---@field DefaultSuperPodId integer
local TDefaultSuperPodId = {}
TDefaultSuperPodId.__index = TDefaultSuperPodId
TDefaultSuperPodId.group = {}

local function TDefaultSuperPodId_from_obj(obj)
    return setmetatable(obj, TDefaultSuperPodId)
end

function TDefaultSuperPodId.new(DefaultSuperPodId)
    return TDefaultSuperPodId_from_obj({DefaultSuperPodId = DefaultSuperPodId or 4294967295})
end
---@param obj MSuperPodLabel.DefaultSuperPodId
function TDefaultSuperPodId:init_from_obj(obj)
    self.DefaultSuperPodId = obj.DefaultSuperPodId or 4294967295
end

function TDefaultSuperPodId:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TDefaultSuperPodId.group)
end

TDefaultSuperPodId.from_obj = TDefaultSuperPodId_from_obj

TDefaultSuperPodId.proto_property = {'DefaultSuperPodId'}

TDefaultSuperPodId.default = {0}

TDefaultSuperPodId.struct = {{name = 'DefaultSuperPodId', is_array = false, struct = nil}}

function TDefaultSuperPodId:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'DefaultSuperPodId', self.DefaultSuperPodId, 'uint32', false, errs, need_convert)

    TDefaultSuperPodId:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TDefaultSuperPodId.proto_property, errs, need_convert)
    return self
end

function TDefaultSuperPodId:unpack(_)
    return self.DefaultSuperPodId
end

MSuperPodLabel.DefaultSuperPodId = TDefaultSuperPodId

---@class MSuperPodLabel.SuperPodSizeAcc
---@field SuperPodSizeAcc integer
local TSuperPodSizeAcc = {}
TSuperPodSizeAcc.__index = TSuperPodSizeAcc
TSuperPodSizeAcc.group = {}

local function TSuperPodSizeAcc_from_obj(obj)
    return setmetatable(obj, TSuperPodSizeAcc)
end

function TSuperPodSizeAcc.new(SuperPodSizeAcc)
    return TSuperPodSizeAcc_from_obj({SuperPodSizeAcc = SuperPodSizeAcc})
end
---@param obj MSuperPodLabel.SuperPodSizeAcc
function TSuperPodSizeAcc:init_from_obj(obj)
    self.SuperPodSizeAcc = obj.SuperPodSizeAcc
end

function TSuperPodSizeAcc:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSuperPodSizeAcc.group)
end

TSuperPodSizeAcc.from_obj = TSuperPodSizeAcc_from_obj

TSuperPodSizeAcc.proto_property = {'SuperPodSizeAcc'}

TSuperPodSizeAcc.default = {0}

TSuperPodSizeAcc.struct = {{name = 'SuperPodSizeAcc', is_array = false, struct = nil}}

function TSuperPodSizeAcc:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'SuperPodSizeAcc', self.SuperPodSizeAcc, 'uint16', false, errs, need_convert)

    TSuperPodSizeAcc:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSuperPodSizeAcc.proto_property, errs, need_convert)
    return self
end

function TSuperPodSizeAcc:unpack(_)
    return self.SuperPodSizeAcc
end

MSuperPodLabel.SuperPodSizeAcc = TSuperPodSizeAcc

---@class MSuperPodLabel.ServerIndexAcc
---@field ServerIndexAcc integer
local TServerIndexAcc = {}
TServerIndexAcc.__index = TServerIndexAcc
TServerIndexAcc.group = {}

local function TServerIndexAcc_from_obj(obj)
    return setmetatable(obj, TServerIndexAcc)
end

function TServerIndexAcc.new(ServerIndexAcc)
    return TServerIndexAcc_from_obj({ServerIndexAcc = ServerIndexAcc})
end
---@param obj MSuperPodLabel.ServerIndexAcc
function TServerIndexAcc:init_from_obj(obj)
    self.ServerIndexAcc = obj.ServerIndexAcc
end

function TServerIndexAcc:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TServerIndexAcc.group)
end

TServerIndexAcc.from_obj = TServerIndexAcc_from_obj

TServerIndexAcc.proto_property = {'ServerIndexAcc'}

TServerIndexAcc.default = {0}

TServerIndexAcc.struct = {{name = 'ServerIndexAcc', is_array = false, struct = nil}}

function TServerIndexAcc:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'ServerIndexAcc', self.ServerIndexAcc, 'uint16', false, errs, need_convert)

    TServerIndexAcc:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TServerIndexAcc.proto_property, errs, need_convert)
    return self
end

function TServerIndexAcc:unpack(_)
    return self.ServerIndexAcc
end

MSuperPodLabel.ServerIndexAcc = TServerIndexAcc

---@class MSuperPodLabel.SuperPodIdAcc
---@field SuperPodIdAcc integer
local TSuperPodIdAcc = {}
TSuperPodIdAcc.__index = TSuperPodIdAcc
TSuperPodIdAcc.group = {}

local function TSuperPodIdAcc_from_obj(obj)
    return setmetatable(obj, TSuperPodIdAcc)
end

function TSuperPodIdAcc.new(SuperPodIdAcc)
    return TSuperPodIdAcc_from_obj({SuperPodIdAcc = SuperPodIdAcc})
end
---@param obj MSuperPodLabel.SuperPodIdAcc
function TSuperPodIdAcc:init_from_obj(obj)
    self.SuperPodIdAcc = obj.SuperPodIdAcc
end

function TSuperPodIdAcc:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSuperPodIdAcc.group)
end

TSuperPodIdAcc.from_obj = TSuperPodIdAcc_from_obj

TSuperPodIdAcc.proto_property = {'SuperPodIdAcc'}

TSuperPodIdAcc.default = {0}

TSuperPodIdAcc.struct = {{name = 'SuperPodIdAcc', is_array = false, struct = nil}}

function TSuperPodIdAcc:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'SuperPodIdAcc', self.SuperPodIdAcc, 'uint32', false, errs, need_convert)

    TSuperPodIdAcc:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSuperPodIdAcc.proto_property, errs, need_convert)
    return self
end

function TSuperPodIdAcc:unpack(_)
    return self.SuperPodIdAcc
end

MSuperPodLabel.SuperPodIdAcc = TSuperPodIdAcc

---@class MSuperPodLabel.Id
---@field Id integer
local TId = {}
TId.__index = TId
TId.group = {}

local function TId_from_obj(obj)
    return setmetatable(obj, TId)
end

function TId.new(Id)
    return TId_from_obj({Id = Id or 1})
end
---@param obj MSuperPodLabel.Id
function TId:init_from_obj(obj)
    self.Id = obj.Id or 1
end

function TId:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TId.group)
end

TId.from_obj = TId_from_obj

TId.proto_property = {'Id'}

TId.default = {0}

TId.struct = {{name = 'Id', is_array = false, struct = nil}}

function TId:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Required(prefix .. 'Id', self.Id, 'uint8', true, errs, need_convert)

    TId:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TId.proto_property, errs, need_convert)
    return self
end

function TId:unpack(_)
    return self.Id
end

MSuperPodLabel.Id = TId

return MSuperPodLabel
