changes for olt reconnect , reboot redesing
Change-Id: I192c01f7672b62956b4b55e19b8cd0d33ca7cfae
fixes for device state handling
Change-Id: I6765b7b53b2c130c70ac37cad28373cec7397908
olt reconnect, reboot redesign changes
Change-Id: I2a4981bc815d0961ffbf7e36ba7cfb06243e8319
diff --git a/VERSION b/VERSION
index cf78d5b..df0228d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-4.2.4
+4.2.5
diff --git a/go.mod b/go.mod
index 11a19f9..ad895fd 100644
--- a/go.mod
+++ b/go.mod
@@ -14,7 +14,7 @@
github.com/golang/protobuf v1.5.2
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
github.com/opencord/voltha-lib-go/v7 v7.1.8
- github.com/opencord/voltha-protos/v5 v5.2.2
+ github.com/opencord/voltha-protos/v5 v5.2.5
github.com/stretchr/testify v1.7.0
go.etcd.io/etcd v3.3.25+incompatible
google.golang.org/grpc v1.44.0
diff --git a/go.sum b/go.sum
index f7c94be..e9d2eec 100644
--- a/go.sum
+++ b/go.sum
@@ -193,8 +193,9 @@
github.com/onsi/gomega v1.14.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0=
github.com/opencord/voltha-lib-go/v7 v7.1.8 h1:5k+1Ul+T+gmvM7GONbK1/+YrX4tizAc3REgHoFvug0I=
github.com/opencord/voltha-lib-go/v7 v7.1.8/go.mod h1:lnwlFfhDVMBg2siCv1CajB1fvfAU9Cs8VbB64LQ8zVg=
-github.com/opencord/voltha-protos/v5 v5.2.2 h1:1Bcgl+Fmp00ZxlDrHZdcbjpMgOwX6TnZmOTrYm9SbR8=
github.com/opencord/voltha-protos/v5 v5.2.2/go.mod h1:ZGcyW79kQKIo7AySo1LRu613E6uiozixrCF0yNB/4x8=
+github.com/opencord/voltha-protos/v5 v5.2.5 h1:FEvUwDMSOvoii1jXCD54HxfEZqb0Gl5dN8DFRd1mGXk=
+github.com/opencord/voltha-protos/v5 v5.2.5/go.mod h1:ZGcyW79kQKIo7AySo1LRu613E6uiozixrCF0yNB/4x8=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
diff --git a/internal/pkg/config/config.go b/internal/pkg/config/config.go
index 576ae72..34cf2ec 100644
--- a/internal/pkg/config/config.go
+++ b/internal/pkg/config/config.go
@@ -47,86 +47,89 @@
defaultGrpcAddress = ":50060"
defaultCoreEndpoint = ":55555"
//defaultGrpcTimeoutInterval is the time in seconds a grpc call will wait before returning error.
- defaultGrpcTimeoutInterval = 2 * time.Second
- defaultCurrentReplica = 1
- defaultTotalReplicas = 1
- defaultTraceEnabled = false
- defaultTraceAgentAddress = "127.0.0.1:6831"
- defaultLogCorrelationEnabled = true
- defaultOmccEncryption = false
- defaultEnableONUStats = false
- defaultEnableGEMStats = false
- defaultMinBackoffRetryDelay = 500 * time.Millisecond
- defaultMaxBackoffRetryDelay = 10 * time.Second
- defaultAdapterEndpoint = "adapter-open-olt"
+ defaultGrpcTimeoutInterval = 2 * time.Second
+ defaultCurrentReplica = 1
+ defaultTotalReplicas = 1
+ defaultTraceEnabled = false
+ defaultTraceAgentAddress = "127.0.0.1:6831"
+ defaultLogCorrelationEnabled = true
+ defaultOmccEncryption = false
+ defaultEnableONUStats = false
+ defaultEnableGEMStats = false
+ defaultMinBackoffRetryDelay = 500 * time.Millisecond
+ defaultMaxBackoffRetryDelay = 10 * time.Second
+ defaultAdapterEndpoint = "adapter-open-olt"
+ defaultCheckOnuDevExistenceAtOnuDiscovery = false
)
// AdapterFlags represents the set of configurations used by the read-write adaptercore service
type AdapterFlags struct {
// Command line parameters
- AdapterName string
- InstanceID string // NOTE what am I used for? why not cli but only ENV? TODO expose in the chart
- KafkaClusterAddress string
- KVStoreType string
- KVStoreTimeout time.Duration
- KVStoreAddress string
- RPCTimeout time.Duration
- EventTopic string
- LogLevel string
- OnuNumber int
- Banner bool
- DisplayVersionOnly bool
- ProbeAddress string
- LiveProbeInterval time.Duration
- NotLiveProbeInterval time.Duration
- HeartbeatCheckInterval time.Duration
- HeartbeatFailReportInterval time.Duration
- GrpcTimeoutInterval time.Duration
- GrpcAddress string
- CoreEndpoint string
- CurrentReplica int
- TotalReplicas int
- TraceEnabled bool
- TraceAgentAddress string
- LogCorrelationEnabled bool
- OmccEncryption bool
- EnableONUStats bool
- EnableGEMStats bool
- MinBackoffRetryDelay time.Duration
- MaxBackoffRetryDelay time.Duration
- AdapterEndpoint string
+ AdapterName string
+ InstanceID string // NOTE what am I used for? why not cli but only ENV? TODO expose in the chart
+ KafkaClusterAddress string
+ KVStoreType string
+ KVStoreTimeout time.Duration
+ KVStoreAddress string
+ RPCTimeout time.Duration
+ EventTopic string
+ LogLevel string
+ OnuNumber int
+ Banner bool
+ DisplayVersionOnly bool
+ ProbeAddress string
+ LiveProbeInterval time.Duration
+ NotLiveProbeInterval time.Duration
+ HeartbeatCheckInterval time.Duration
+ HeartbeatFailReportInterval time.Duration
+ GrpcTimeoutInterval time.Duration
+ GrpcAddress string
+ CoreEndpoint string
+ CurrentReplica int
+ TotalReplicas int
+ TraceEnabled bool
+ TraceAgentAddress string
+ LogCorrelationEnabled bool
+ OmccEncryption bool
+ EnableONUStats bool
+ EnableGEMStats bool
+ MinBackoffRetryDelay time.Duration
+ MaxBackoffRetryDelay time.Duration
+ AdapterEndpoint string
+ CheckOnuDevExistenceAtOnuDiscovery bool
}
// NewAdapterFlags returns a new RWCore config
func NewAdapterFlags() *AdapterFlags {
var adapterFlags = AdapterFlags{ // Default values
- InstanceID: defaultInstanceid,
- KafkaClusterAddress: defaultKafkaclusteraddress,
- KVStoreType: defaultKvstoretype,
- KVStoreTimeout: defaultKvstoretimeout,
- KVStoreAddress: defaultKvstoreaddress,
- EventTopic: defaultEventtopic,
- LogLevel: defaultLoglevel,
- OnuNumber: defaultOnunumber,
- Banner: defaultBanner,
- DisplayVersionOnly: defaultDisplayVersionOnly,
- ProbeAddress: defaultProbeAddress,
- LiveProbeInterval: defaultLiveProbeInterval,
- NotLiveProbeInterval: defaultNotLiveProbeInterval,
- HeartbeatCheckInterval: defaultHeartbeatCheckInterval,
- HeartbeatFailReportInterval: defaultHeartbeatFailReportInterval,
- GrpcAddress: defaultGrpcAddress,
- CoreEndpoint: defaultCoreEndpoint,
- GrpcTimeoutInterval: defaultGrpcTimeoutInterval,
- TraceEnabled: defaultTraceEnabled,
- TraceAgentAddress: defaultTraceAgentAddress,
- LogCorrelationEnabled: defaultLogCorrelationEnabled,
- OmccEncryption: defaultOmccEncryption,
- EnableONUStats: defaultEnableONUStats,
- EnableGEMStats: defaultEnableGEMStats,
- RPCTimeout: defaultRPCTimeout,
- MinBackoffRetryDelay: defaultMinBackoffRetryDelay,
- MaxBackoffRetryDelay: defaultMaxBackoffRetryDelay,
+ InstanceID: defaultInstanceid,
+ KafkaClusterAddress: defaultKafkaclusteraddress,
+ KVStoreType: defaultKvstoretype,
+ KVStoreTimeout: defaultKvstoretimeout,
+ KVStoreAddress: defaultKvstoreaddress,
+ EventTopic: defaultEventtopic,
+ LogLevel: defaultLoglevel,
+ OnuNumber: defaultOnunumber,
+ Banner: defaultBanner,
+ DisplayVersionOnly: defaultDisplayVersionOnly,
+ ProbeAddress: defaultProbeAddress,
+ LiveProbeInterval: defaultLiveProbeInterval,
+ NotLiveProbeInterval: defaultNotLiveProbeInterval,
+ HeartbeatCheckInterval: defaultHeartbeatCheckInterval,
+ HeartbeatFailReportInterval: defaultHeartbeatFailReportInterval,
+ GrpcAddress: defaultGrpcAddress,
+ CoreEndpoint: defaultCoreEndpoint,
+ GrpcTimeoutInterval: defaultGrpcTimeoutInterval,
+ TraceEnabled: defaultTraceEnabled,
+ TraceAgentAddress: defaultTraceAgentAddress,
+ LogCorrelationEnabled: defaultLogCorrelationEnabled,
+ OmccEncryption: defaultOmccEncryption,
+ EnableONUStats: defaultEnableONUStats,
+ EnableGEMStats: defaultEnableGEMStats,
+ RPCTimeout: defaultRPCTimeout,
+ MinBackoffRetryDelay: defaultMinBackoffRetryDelay,
+ MaxBackoffRetryDelay: defaultMaxBackoffRetryDelay,
+ CheckOnuDevExistenceAtOnuDiscovery: defaultCheckOnuDevExistenceAtOnuDiscovery,
}
return &adapterFlags
}
@@ -279,6 +282,11 @@
defaultMaxBackoffRetryDelay,
"The maximum number of milliseconds to delay before a connection retry attempt")
+ flag.BoolVar(&(so.CheckOnuDevExistenceAtOnuDiscovery),
+ "check_onu_exist_on_discovery",
+ defaultCheckOnuDevExistenceAtOnuDiscovery,
+ "Whether to check for flows only or child device before honoring discovery?")
+
flag.Parse()
containerName := getContainerInfo()
if len(containerName) > 0 {
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index 2d3c7c5..500dbf1 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -21,6 +21,7 @@
"context"
"encoding/binary"
"encoding/hex"
+ "encoding/json"
"errors"
"fmt"
"net"
@@ -72,6 +73,7 @@
oltPortInfoTimeout = 3
defaultPortSpeedMbps = 1000
+ heartbeatPath = "heartbeat"
)
//DeviceHandler will interact with the OLT device.
@@ -93,6 +95,7 @@
groupMgr *OpenOltGroupMgr
eventMgr *OpenOltEventMgr
resourceMgr []*rsrcMgr.OpenOltResourceMgr
+ kvStore *db.Backend // backend kv store connection handle
deviceInfo *oop.DeviceInfo
@@ -120,6 +123,7 @@
agentPreviouslyConnected bool
isDeviceDeletionInProgress bool
+ heartbeatSignature uint32
}
//OnuDevice represents ONU related info
@@ -185,6 +189,7 @@
//NewDeviceHandler creates a new device handler
func NewDeviceHandler(cc *vgrpc.Client, ep eventif.EventProxy, device *voltha.Device, adapter *OpenOLT, cm *config.ConfigManager, cfg *conf.AdapterFlags) *DeviceHandler {
var dh DeviceHandler
+ ctx := context.Background()
dh.cm = cm
dh.coreClient = cc
dh.EventProxy = ep
@@ -201,6 +206,13 @@
dh.perPonOnuIndicationChannel = make(map[uint32]onuIndicationChannels)
dh.childAdapterClients = make(map[string]*vgrpc.Client)
dh.cfg = cfg
+ kvStoreDevicePath := fmt.Sprintf(dh.cm.Backend.PathPrefix, "/%s/", dh.device.Id)
+ dh.kvStore = SetKVClient(ctx, dh.openOLT.KVStoreType, dh.openOLT.KVStoreAddress, dh.device.Id, kvStoreDevicePath)
+ if dh.kvStore == nil {
+ logger.Error(ctx, "Failed to setup KV store")
+ return nil
+ }
+
// Create a slice of buffered channels for handling concurrent mcast flow/group.
dh.incomingMcastFlowOrGroup = make([]chan McastFlowOrGroupControlBlock, MaxNumOfGroupHandlerChannels)
dh.stopMcastHandlerRoutine = make([]chan bool, MaxNumOfGroupHandlerChannels)
@@ -219,6 +231,33 @@
return &dh
}
+func newKVClient(ctx context.Context, storeType string, address string, timeout time.Duration) (kvstore.Client, error) {
+ logger.Infow(ctx, "kv-store-type", log.Fields{"store": storeType})
+ switch storeType {
+ case "etcd":
+ return kvstore.NewEtcdClient(ctx, address, timeout, log.FatalLevel)
+ }
+ return nil, errors.New("unsupported-kv-store")
+}
+
+// SetKVClient sets the KV client and return a kv backend
+func SetKVClient(ctx context.Context, backend string, addr string, DeviceID string, basePathKvStore string) *db.Backend {
+ kvClient, err := newKVClient(ctx, backend, addr, rsrcMgr.KvstoreTimeout)
+ if err != nil {
+ logger.Fatalw(ctx, "Failed to init KV client\n", log.Fields{"err": err})
+ return nil
+ }
+
+ kvbackend := &db.Backend{
+ Client: kvClient,
+ StoreType: backend,
+ Address: addr,
+ Timeout: rsrcMgr.KvstoreTimeout,
+ PathPrefix: fmt.Sprintf(rsrcMgr.BasePathKvStore, basePathKvStore, DeviceID)}
+
+ return kvbackend
+}
+
// start save the device to the data model
func (dh *DeviceHandler) start(ctx context.Context) {
dh.lockDevice.Lock()
@@ -744,18 +783,6 @@
raisedTs := time.Now().Unix()
go dh.eventMgr.oltCommunicationEvent(ctx, dh.device, raisedTs)
- //check adapter and agent reconcile status
- //reboot olt if needed (olt disconnection case)
- if dh.adapterPreviouslyConnected != dh.agentPreviouslyConnected {
- logger.Warnw(ctx, "different-reconcile-status-between-adapter-and-agent-rebooting-device",
- log.Fields{
- "device-id": dh.device.Id,
- "adapter-status": dh.adapterPreviouslyConnected,
- "agent-status": dh.agentPreviouslyConnected,
- })
- _ = dh.RebootDevice(ctx, dh.device)
- }
-
return nil
}
@@ -839,6 +866,7 @@
}
}
+ logger.Debugw(ctx, "Dailing grpc", log.Fields{"device-id": dh.device.Id})
// Use Interceptors to automatically inject and publish Open Tracing Spans by this GRPC client
dh.clientCon, err = grpc.Dial(dh.device.GetHostAndPort(),
grpc.WithInsecure(),
@@ -905,13 +933,6 @@
return olterrors.NewErrAdapter("device-handler-initialization-failed", log.Fields{"device-id": dh.device.Id}, err).LogAt(log.ErrorLevel)
}
- // Start reading indications
- go func() {
- if err = dh.readIndications(ctx); err != nil {
- _ = olterrors.NewErrAdapter("indication-read-failure", log.Fields{"device-id": dh.device.Id}, err).LogAt(log.ErrorLevel)
- }
- }()
-
go startHeartbeatCheck(ctx, dh)
return nil
@@ -931,12 +952,6 @@
return olterrors.NewErrAdapter("device-handler-initialization-failed", log.Fields{"device-id": dh.device.Id}, err).LogAt(log.ErrorLevel)
}
- // Start reading indications
- go func() {
- if err := dh.readIndications(ctx); err != nil {
- _ = olterrors.NewErrAdapter("read-indications-failure", log.Fields{"device-id": dh.device.Id}, err).Log()
- }
- }()
go dh.updateLocalDevice(ctx)
if device.PmConfigs != nil {
@@ -1368,13 +1383,88 @@
return nil
}
-func (dh *DeviceHandler) onuDiscIndication(ctx context.Context, onuDiscInd *oop.OnuDiscIndication) error {
+//getChildDevice function can be used in general to get child device, if not found in cache the function will
+//get from core and update the cache and return the child device.
+func (dh *DeviceHandler) getChildDevice(ctx context.Context, sn string, parentPortNo uint32) *OnuDevice {
+ var InCacheOnuDev *OnuDevice
+ dh.onus.Range(func(Onukey interface{}, onuInCache interface{}) bool {
+ if onuInCache.(*OnuDevice).serialNumber == sn {
+ InCacheOnuDev = onuInCache.(*OnuDevice)
+ return false
+ }
+ return true
+ })
+ //Got the onu device from cache return
+ if InCacheOnuDev != nil {
+ logger.Debugw(ctx, "Got child device from cache", log.Fields{"onudev": InCacheOnuDev.serialNumber})
+ return InCacheOnuDev
+ }
+ onuDevice, _ := dh.getChildDeviceFromCore(ctx, &ca.ChildDeviceFilter{
+ ParentId: dh.device.Id,
+ SerialNumber: sn,
+ ParentPortNo: parentPortNo,
+ })
+ //No device found in core return nil
+ if onuDevice == nil {
+ return nil
+ }
+ onuID := onuDevice.ProxyAddress.OnuId
+ intfID := plt.PortNoToIntfID(parentPortNo, voltha.Port_PON_OLT)
+ onuKey := dh.formOnuKey(intfID, onuID)
+
+ onuDev := NewOnuDevice(onuDevice.Id, onuDevice.Type, onuDevice.SerialNumber, onuDevice.ProxyAddress.OnuId, intfID, onuDevice.ProxyAddress.DeviceId, false, onuDevice.AdapterEndpoint)
+ dh.onus.Store(onuKey, onuDev)
+ logger.Debugw(ctx, "got child device from core", log.Fields{"onudev": onuDevice})
+ return onuDev
+}
+
+func (dh *DeviceHandler) checkForResourceExistance(ctx context.Context, onuDiscInd *oop.OnuDiscIndication, sn string) (bool, error) {
channelID := onuDiscInd.GetIntfId()
parentPortNo := plt.IntfIDToPortNo(onuDiscInd.GetIntfId(), voltha.Port_PON_OLT)
+ tpInstExists := false
- sn := dh.stringifySerialNumber(onuDiscInd.SerialNumber)
- logger.Infow(ctx, "new-discovery-indication", log.Fields{"sn": sn})
+ //CheckOnuDevExistenceAtOnuDiscovery if true , a check will be made for the existence of the onu device. If the onu device
+ // still exists , the onu discovery will be ignored, else a check for active techprofiles for ONU is checked.
+ if !dh.openOLT.CheckOnuDevExistenceAtOnuDiscovery {
+ onuDev := dh.getChildDevice(ctx, sn, parentPortNo)
+ if onuDev != nil {
+ var onuGemInfo *rsrcMgr.OnuGemInfo
+ var err error
+ if onuGemInfo, err = dh.resourceMgr[channelID].GetOnuGemInfo(ctx, onuDev.onuID); err != nil {
+ logger.Warnw(ctx, "Unable to find onuGemInfo", log.Fields{"onuID": onuDev.onuID})
+ return false, err
+ }
+ if onuGemInfo != nil {
+ for _, uni := range onuGemInfo.UniPorts {
+ uniID := plt.UniIDFromPortNum(uni)
+ tpIDs := dh.resourceMgr[channelID].GetTechProfileIDForOnu(ctx, onuDev.onuID, uniID)
+ if len(tpIDs) != 0 {
+ logger.Warnw(ctx, "Techprofile present for ONU, ignoring onu discovery", log.Fields{"onuID": onuDev.onuID})
+ tpInstExists = true
+ break
+ }
+ }
+ }
+ }
+ return tpInstExists, nil
+ }
+ onuDevice, _ := dh.getChildDeviceFromCore(ctx, &ca.ChildDeviceFilter{
+ ParentId: dh.device.Id,
+ SerialNumber: sn,
+ ParentPortNo: parentPortNo,
+ })
+ if onuDevice != nil {
+ logger.Infow(ctx, "Child device still present ignoring discovery indication", log.Fields{"sn": sn})
+ return true, nil
+ }
+ logger.Infow(ctx, "No device present in core , continuing with discovery", log.Fields{"sn": sn})
+
+ return false, nil
+
+}
+
+func (dh *DeviceHandler) processDiscONULOSClear(ctx context.Context, onuDiscInd *oop.OnuDiscIndication, sn string) bool {
var alarmInd oop.OnuAlarmIndication
raisedTs := time.Now().Unix()
if _, loaded := dh.discOnus.LoadOrStore(sn, true); loaded {
@@ -1405,9 +1495,29 @@
})
logger.Warnw(ctx, "onu-sn-is-already-being-processed", log.Fields{"sn": sn})
+ return true
+ }
+ return false
+}
+
+func (dh *DeviceHandler) onuDiscIndication(ctx context.Context, onuDiscInd *oop.OnuDiscIndication) error {
+ channelID := onuDiscInd.GetIntfId()
+ parentPortNo := plt.IntfIDToPortNo(onuDiscInd.GetIntfId(), voltha.Port_PON_OLT)
+
+ sn := dh.stringifySerialNumber(onuDiscInd.SerialNumber)
+ logger.Infow(ctx, "new-discovery-indication", log.Fields{"sn": sn})
+
+ tpInstExists, errtp := dh.checkForResourceExistance(ctx, onuDiscInd, sn)
+ if errtp != nil {
+ return errtp
+ }
+ if tpInstExists {
+ //ignore the discovery if tpinstance is present.
return nil
}
-
+ if onuBeingProcessed := dh.processDiscONULOSClear(ctx, onuDiscInd, sn); onuBeingProcessed {
+ return nil
+ }
var onuID uint32
// check the ONU is already know to the OLT
@@ -2283,6 +2393,7 @@
// start the heartbeat check towards the OLT.
var timerCheck *time.Timer
+ dh.heartbeatSignature = dh.getHeartbeatSignature(ctx)
for {
heartbeatTimer := time.NewTimer(dh.openOLT.HeartbeatCheckInterval)
@@ -2302,9 +2413,36 @@
}
timerCheck = nil
}
- logger.Debugw(ctx, "heartbeat",
- log.Fields{"signature": heartBeat,
- "device-id": dh.device.Id})
+ if dh.heartbeatSignature == 0 || dh.heartbeatSignature == heartBeat.HeartbeatSignature {
+ if dh.heartbeatSignature == 0 {
+ // First time the signature will be 0, update the signture to DB when not found.
+ dh.updateHeartbeatSignature(ctx, heartBeat.HeartbeatSignature)
+ dh.heartbeatSignature = heartBeat.HeartbeatSignature
+ }
+ logger.Infow(ctx, "heartbeat signature", log.Fields{"sign": dh.heartbeatSignature})
+
+ dh.lockDevice.RLock()
+ // Stop the read indication only if it the routine is active
+ // The read indication would have already stopped due to failure on the gRPC stream following OLT going unreachable
+ // Sending message on the 'stopIndication' channel again will cause the readIndication routine to immediately stop
+ // on next execution of the readIndication routine.
+ if !dh.isReadIndicationRoutineActive {
+ // Start reading indications
+ go func() {
+ if err = dh.readIndications(ctx); err != nil {
+ _ = olterrors.NewErrAdapter("indication-read-failure", log.Fields{"device-id": dh.device.Id}, err).LogAt(log.ErrorLevel)
+ }
+ }()
+ }
+ dh.lockDevice.RUnlock()
+
+ } else {
+ logger.Warn(ctx, "Heartbeat signature changed, OLT is rebooted. Cleaningup resources.")
+ dh.updateHeartbeatSignature(ctx, heartBeat.HeartbeatSignature)
+ dh.heartbeatSignature = heartBeat.HeartbeatSignature
+ go dh.updateStateRebooted(ctx)
+ }
+
}
cancel()
case <-dh.stopHeartbeatCheck:
@@ -2327,7 +2465,7 @@
return
}
- logger.Debugw(ctx, "update-state-unreachable", log.Fields{"device-id": dh.device.Id, "connect-status": device.ConnectStatus,
+ logger.Warnw(ctx, "update-state-unreachable", log.Fields{"device-id": dh.device.Id, "connect-status": device.ConnectStatus,
"admin-state": device.AdminState, "oper-status": device.OperStatus})
if device.ConnectStatus == voltha.ConnectStatus_REACHABLE {
if err = dh.updateDeviceStateInCore(ctx, &ca.DeviceStateFilter{
@@ -2337,14 +2475,15 @@
}); err != nil {
_ = olterrors.NewErrAdapter("device-state-update-failed", log.Fields{"device-id": dh.device.Id}, err).LogAt(log.ErrorLevel)
}
-
- if err = dh.updatePortsStateInCore(ctx, &ca.PortStateFilter{
- DeviceId: dh.device.Id,
- PortTypeFilter: 0,
- OperStatus: voltha.OperStatus_UNKNOWN,
- }); err != nil {
- _ = olterrors.NewErrAdapter("port-update-failed", log.Fields{"device-id": dh.device.Id}, err).Log()
- }
+ /*
+ if err = dh.updatePortsStateInCore(ctx, &ca.PortStateFilter{
+ DeviceId: dh.device.Id,
+ PortTypeFilter: 0,
+ OperStatus: voltha.OperStatus_UNKNOWN,
+ }); err != nil {
+ _ = olterrors.NewErrAdapter("port-update-failed", log.Fields{"device-id": dh.device.Id}, err).Log()
+ }
+ */
//raise olt communication failure event
raisedTs := time.Now().Unix()
@@ -2354,12 +2493,10 @@
dh.device = cloned // update local copy of the device
go dh.eventMgr.oltCommunicationEvent(ctx, cloned, raisedTs)
- dh.cleanupDeviceResources(ctx)
// Stop the Stats collector
dh.stopCollector <- true
// stop the heartbeat check routine
dh.stopHeartbeatCheck <- true
-
dh.lockDevice.RLock()
// Stop the read indication only if it the routine is active
// The read indication would have already stopped due to failure on the gRPC stream following OLT going unreachable
@@ -2369,28 +2506,94 @@
dh.stopIndications <- true
}
dh.lockDevice.RUnlock()
-
- var wg sync.WaitGroup
- wg.Add(1) // for the multicast handler routine
- go dh.StopAllMcastHandlerRoutines(ctx, &wg)
- for _, flMgr := range dh.flowMgr {
- wg.Add(1) // for the flow handler routine
- go flMgr.StopAllFlowHandlerRoutines(ctx, &wg)
- }
- if !dh.waitForTimeoutOrCompletion(&wg, time.Second*30) {
- logger.Warnw(ctx, "timed out waiting for stopping flow and group handlers", log.Fields{"deviceID": device.Id})
- } else {
- logger.Infow(ctx, "all flow and group handlers shutdown gracefully", log.Fields{"deviceID": device.Id})
- }
-
- //reset adapter reconcile flag
- dh.adapterPreviouslyConnected = false
-
dh.transitionMap.Handle(ctx, DeviceInit)
}
}
+func (dh *DeviceHandler) updateStateRebooted(ctx context.Context) {
+ device, err := dh.getDeviceFromCore(ctx, dh.device.Id)
+ if err != nil || device == nil {
+ // One case where we have seen core returning an error for GetDevice call is after OLT device delete.
+ // After OLT delete, the adapter asks for OLT to reboot. When OLT is rebooted, shortly we loose heartbeat.
+ // The 'startHeartbeatCheck' then asks the device to be marked unreachable towards the core, but the core
+ // has already deleted the device and returns error. In this particular scenario, it is Ok because any necessary
+ // cleanup in the adapter was already done during DeleteDevice API handler routine.
+ _ = olterrors.NewErrNotFound("device", log.Fields{"device-id": dh.device.Id}, err).Log()
+ // Immediately return, otherwise accessing a null 'device' struct would cause panic
+ return
+ }
+
+ logger.Warnw(ctx, "update-state-rebooted", log.Fields{"device-id": dh.device.Id, "connect-status": device.ConnectStatus,
+ "admin-state": device.AdminState, "oper-status": device.OperStatus, "conn-status": voltha.ConnectStatus_UNREACHABLE})
+ if err = dh.updateDeviceStateInCore(ctx, &ca.DeviceStateFilter{
+ DeviceId: dh.device.Id,
+ OperStatus: voltha.OperStatus_REBOOTED,
+ ConnStatus: voltha.ConnectStatus_REACHABLE,
+ }); err != nil {
+ _ = olterrors.NewErrAdapter("device-state-update-failed", log.Fields{"device-id": dh.device.Id}, err).LogAt(log.ErrorLevel)
+ }
+
+ dh.lockDevice.RLock()
+ // Stop the read indication only if it the routine is active
+ // The read indication would have already stopped due to failure on the gRPC stream following OLT going unreachable
+ // Sending message on the 'stopIndication' channel again will cause the readIndication routine to immediately stop
+ // on next execution of the readIndication routine.
+ if dh.isReadIndicationRoutineActive {
+ dh.stopIndications <- true
+ }
+ dh.lockDevice.RUnlock()
+
+ //raise olt communication failure event
+ raisedTs := time.Now().Unix()
+ cloned := proto.Clone(device).(*voltha.Device)
+ cloned.ConnectStatus = voltha.ConnectStatus_UNREACHABLE
+ cloned.OperStatus = voltha.OperStatus_UNKNOWN
+ dh.device = cloned // update local copy of the device
+ go dh.eventMgr.oltCommunicationEvent(ctx, cloned, raisedTs)
+
+ dh.cleanupDeviceResources(ctx)
+ // Stop the Stats collector
+ dh.stopCollector <- true
+ // stop the heartbeat check routine
+ dh.stopHeartbeatCheck <- true
+
+ var wg sync.WaitGroup
+ wg.Add(1) // for the multicast handler routine
+ go dh.StopAllMcastHandlerRoutines(ctx, &wg)
+ for _, flMgr := range dh.flowMgr {
+ wg.Add(1) // for the flow handler routine
+ go flMgr.StopAllFlowHandlerRoutines(ctx, &wg)
+ }
+ if !dh.waitForTimeoutOrCompletion(&wg, time.Second*30) {
+ logger.Warnw(ctx, "timed out waiting for stopping flow and group handlers", log.Fields{"deviceID": device.Id})
+ } else {
+ logger.Infow(ctx, "all flow and group handlers shutdown gracefully", log.Fields{"deviceID": device.Id})
+ }
+
+ //reset adapter reconcile flag
+ dh.adapterPreviouslyConnected = false
+ for {
+
+ childDevices, err := dh.getChildDevicesFromCore(ctx, dh.device.Id)
+ if err != nil || childDevices == nil {
+ logger.Errorw(ctx, "Failed to get child devices from core", log.Fields{"deviceID": dh.device.Id})
+ continue
+ }
+ if len(childDevices.Items) == 0 {
+ logger.Infow(ctx, "All childDevices cleared from core, proceed with device init", log.Fields{"deviceID": dh.device.Id})
+ break
+ } else {
+ logger.Warn(ctx, "Not all child devices are cleared, continuing to wait")
+ time.Sleep(5 * time.Second)
+ }
+
+ }
+ logger.Infow(ctx, "cleanup complete after reboot , moving to init", log.Fields{"deviceID": device.Id})
+ dh.transitionMap.Handle(ctx, DeviceInit)
+
+}
+
// EnablePort to enable Pon interface
func (dh *DeviceHandler) EnablePort(ctx context.Context, port *voltha.Port) error {
logger.Debugw(ctx, "enable-port", log.Fields{"Device": dh.device, "port": port})
@@ -3368,3 +3571,34 @@
return false // timed out
}
}
+
+func (dh *DeviceHandler) updateHeartbeatSignature(ctx context.Context, signature uint32) {
+ val, err := json.Marshal(signature)
+ if err != nil {
+ logger.Error(ctx, "failed-to-marshal")
+ return
+ }
+ if err = dh.kvStore.Put(ctx, heartbeatPath, val); err != nil {
+ logger.Error(ctx, "failed-to-store-hearbeat-signature")
+ }
+}
+
+func (dh *DeviceHandler) getHeartbeatSignature(ctx context.Context) uint32 {
+ var signature uint32
+
+ Value, er := dh.kvStore.Get(ctx, heartbeatPath)
+ if er == nil {
+ if Value != nil {
+ Val, er := kvstore.ToByte(Value.Value)
+ if er != nil {
+ logger.Errorw(ctx, "Failed to convert into byte array", log.Fields{"err": er})
+ return signature
+ }
+ if er = json.Unmarshal(Val, &signature); er != nil {
+ logger.Error(ctx, "Failed to unmarshal signature", log.Fields{"err": er})
+ return signature
+ }
+ }
+ }
+ return signature
+}
diff --git a/internal/pkg/core/device_handler_test.go b/internal/pkg/core/device_handler_test.go
index 8737ee2..4d5d231 100644
--- a/internal/pkg/core/device_handler_test.go
+++ b/internal/pkg/core/device_handler_test.go
@@ -167,8 +167,9 @@
cm := &conf.ConfigManager{}
cm.Backend = &db.Backend{StoreType: "etcd", Client: &mocks.MockKVClient{}}
cfg := &config.AdapterFlags{OmccEncryption: true}
- openOLT := &OpenOLT{eventProxy: ep, config: cfg}
+ openOLT := &OpenOLT{eventProxy: ep, config: cfg, KVStoreType: "etcd", KVStoreAddress: "1:2"}
dh := NewDeviceHandler(cc, ep, device, openOLT, cm, cfg)
+ dh.kvStore = cm.Backend
oopRanges := []*oop.DeviceInfo_DeviceResourceRanges{{
IntfIds: []uint32{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
Technology: "xgs-pon",
@@ -1373,6 +1374,8 @@
}
}
+/* We are not using the adapterPreviouslyConnected and agentPreviouslyConnected flags now to check for reboots and reconnects
+commenting out all the tests related to these
func TestDeviceHandler_TestReconcileStatus(t *testing.T) {
// olt disconnect (not reboot)
@@ -1431,7 +1434,7 @@
})
}
}
-
+*/
func Test_UpdateFlowsIncrementallyNegativeTestCases(t *testing.T) {
dh1 := negativeDeviceHandlerNilFlowMgr()
tests := []struct {
diff --git a/internal/pkg/core/olt_state_transitions.go b/internal/pkg/core/olt_state_transitions.go
index 6c3f77d..6b04b94 100644
--- a/internal/pkg/core/olt_state_transitions.go
+++ b/internal/pkg/core/olt_state_transitions.go
@@ -91,7 +91,7 @@
// In doInit establish the grpc session
transitionMap.transitions[DeviceInit] =
Transition{
- previousState: []DeviceState{deviceStateNull, deviceStateUp, deviceStateDown},
+ previousState: []DeviceState{deviceStateNull, deviceStateConnected, deviceStateUp, deviceStateDown},
currentState: deviceStateInit,
before: []TransitionHandler{dh.doStateInit},
after: []TransitionHandler{dh.postInit}}
diff --git a/internal/pkg/core/openolt.go b/internal/pkg/core/openolt.go
index a483111..801e563 100644
--- a/internal/pkg/core/openolt.go
+++ b/internal/pkg/core/openolt.go
@@ -43,22 +43,23 @@
//OpenOLT structure holds the OLT information
type OpenOLT struct {
- configManager *conf.ConfigManager
- deviceHandlers map[string]*DeviceHandler
- coreClient *vgrpc.Client
- eventProxy eventif.EventProxy
- config *config.AdapterFlags
- numOnus int
- KVStoreAddress string
- KVStoreType string
- exitChannel chan struct{}
- HeartbeatCheckInterval time.Duration
- HeartbeatFailReportInterval time.Duration
- GrpcTimeoutInterval time.Duration
- lockDeviceHandlersMap sync.RWMutex
- enableONUStats bool
- enableGemStats bool
- rpcTimeout time.Duration
+ configManager *conf.ConfigManager
+ deviceHandlers map[string]*DeviceHandler
+ coreClient *vgrpc.Client
+ eventProxy eventif.EventProxy
+ config *config.AdapterFlags
+ numOnus int
+ KVStoreAddress string
+ KVStoreType string
+ exitChannel chan struct{}
+ HeartbeatCheckInterval time.Duration
+ HeartbeatFailReportInterval time.Duration
+ GrpcTimeoutInterval time.Duration
+ lockDeviceHandlersMap sync.RWMutex
+ enableONUStats bool
+ enableGemStats bool
+ rpcTimeout time.Duration
+ CheckOnuDevExistenceAtOnuDiscovery bool
}
//NewOpenOLT returns a new instance of OpenOLT
@@ -82,6 +83,7 @@
openOLT.enableONUStats = cfg.EnableONUStats
openOLT.enableGemStats = cfg.EnableGEMStats
openOLT.rpcTimeout = cfg.RPCTimeout
+ openOLT.CheckOnuDevExistenceAtOnuDiscovery = cfg.CheckOnuDevExistenceAtOnuDiscovery
return &openOLT
}
diff --git a/internal/pkg/core/openolt_flowmgr.go b/internal/pkg/core/openolt_flowmgr.go
index 9606217..6cc4f5b 100644
--- a/internal/pkg/core/openolt_flowmgr.go
+++ b/internal/pkg/core/openolt_flowmgr.go
@@ -1984,13 +1984,6 @@
// Free TPInstance, TPID, GemPorts and Traffic Queues. AllocID and Schedulers will be cleared later only if they are not shared across all the UNIs
switch techprofileInst := techprofileInst.(type) {
case *tp_pb.TechProfileInstance:
- if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, uint32(onuID), uint32(uniID), tpID); err != nil {
- logger.Warn(ctx, err)
- }
- if err := f.DeleteTechProfileInstance(ctx, intfID, uint32(onuID), uint32(uniID), "", tpID); err != nil {
- logger.Warn(ctx, err)
- }
-
for _, gemPort := range techprofileInst.UpstreamGemPortAttributeList {
gemPortID := gemPort.GemportId
_ = f.resourceMgr.RemoveGemFromOnuGemInfo(ctx, uint32(onuID), gemPortID) // ignore error and proceed.
@@ -2051,12 +2044,6 @@
}
}
case *tp_pb.EponTechProfileInstance:
- if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, uint32(onuID), uint32(uniID), tpID); err != nil {
- logger.Warn(ctx, err)
- }
- if err := f.DeleteTechProfileInstance(ctx, intfID, uint32(onuID), uint32(uniID), "", tpID); err != nil {
- logger.Warn(ctx, err)
- }
// Delete the TCONT on the ONU.
if err := f.sendDeleteTcontToChild(ctx, intfID, uint32(onuID), uint32(uniID), techprofileInst.AllocId, tpPath); err != nil {
logger.Errorw(ctx, "error-processing-delete-tcont-towards-onu",
@@ -2069,6 +2056,12 @@
"error": err})
}
f.resourceMgr.FreeAllocID(ctx, uint32(onuID), uint32(uniID), techprofileInst.AllocId, true)
+ if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, uint32(onuID), uint32(uniID), tpID); err != nil {
+ logger.Warn(ctx, err)
+ }
+ if err := f.DeleteTechProfileInstance(ctx, intfID, uint32(onuID), uint32(uniID), "", tpID); err != nil {
+ logger.Warn(ctx, err)
+ }
default:
logger.Errorw(ctx, "error-unknown-tech",
log.Fields{
@@ -2094,6 +2087,13 @@
f.resourceMgr.FreeGemPortID(ctx, uint32(onuID), uint32(uniID), gemPort.GemportId)
}
}
+ //Delete the tp instance and the techprofileid for onu at the end
+ if err := f.DeleteTechProfileInstance(ctx, intfID, uint32(onuID), uint32(uniID), "", tpID); err != nil {
+ logger.Warn(ctx, err)
+ }
+ if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, uint32(onuID), uint32(uniID), tpID); err != nil {
+ logger.Warn(ctx, err)
+ }
}
return nil
diff --git a/internal/pkg/resourcemanager/resourcemanager_test.go b/internal/pkg/resourcemanager/resourcemanager_test.go
index 77832b4..d0b6fcf 100644
--- a/internal/pkg/resourcemanager/resourcemanager_test.go
+++ b/internal/pkg/resourcemanager/resourcemanager_test.go
@@ -290,13 +290,26 @@
devInfo *openolt.DeviceInfo
kvStorePrefix string
}
+ /* As of not the current NewResourceMgr test is not doing anything as there was no resourceranges passed.
+ passing the resource ranges would mean passing a mock and changes in all around including device handler and other places.
+ For now , removed the older version of proto which used ONUIDSTart and ONUIDENd which is not valid.
+ This test needs to be updated once the kv store mock is fixed all around. Use the below resource ranges in the Ranges of deviceinfo once the kv store is fixed.
+ intfids := []uint32{0, 1, 2, 3, 4, 5}
+ devOnuRsrcPools := &openolt.DeviceInfo_DeviceResourceRanges_Pool{Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_ONU_ID, Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF, Start: 1, End: 60}
+ devGemRsrcPools := &openolt.DeviceInfo_DeviceResourceRanges_Pool{Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_GEMPORT_ID, Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF, Start: 1, End: 10000}
+ devAllocRsrcPools := &openolt.DeviceInfo_DeviceResourceRanges_Pool{Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_ALLOC_ID, Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_DEDICATED_PER_INTF, Start: 1, End: 256}
+ devFlowRsrcPools := &openolt.DeviceInfo_DeviceResourceRanges_Pool{Type: openolt.DeviceInfo_DeviceResourceRanges_Pool_FLOW_ID, Sharing: openolt.DeviceInfo_DeviceResourceRanges_Pool_SHARED_BY_ALL_INTF_SAME_TECH, Start: 1, End: 20000}
+ pool := []*openolt.DeviceInfo_DeviceResourceRanges_Pool{devOnuRsrcPools, devGemRsrcPools, devAllocRsrcPools, devFlowRsrcPools}
+ devRsrc := &openolt.DeviceInfo_DeviceResourceRanges{IntfIds: intfids, Technology: "GPON", Pools: pool}
+ devRsrcPool := []*openolt.DeviceInfo_DeviceResourceRanges{devRsrc}
+ */
tests := []struct {
name string
args args
want *OpenOltResourceMgr
}{
{"NewResourceMgr-2", args{"olt1", 0, "1:2", "etcd",
- "onu", &openolt.DeviceInfo{OnuIdStart: 1, OnuIdEnd: 1}, "service/voltha"}, &OpenOltResourceMgr{}},
+ "olt", &openolt.DeviceInfo{}, "service/voltha"}, &OpenOltResourceMgr{}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
index 87d3dca..47987d1 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/common/common.pb.go
@@ -103,6 +103,8 @@
OperStatus_RECONCILING OperStatus_Types = 6
// The device is in reconciling failed
OperStatus_RECONCILING_FAILED OperStatus_Types = 7
+ // The device has rebooted
+ OperStatus_REBOOTED OperStatus_Types = 8
)
var OperStatus_Types_name = map[int32]string{
@@ -114,6 +116,7 @@
5: "FAILED",
6: "RECONCILING",
7: "RECONCILING_FAILED",
+ 8: "REBOOTED",
}
var OperStatus_Types_value = map[string]int32{
@@ -125,6 +128,7 @@
"FAILED": 5,
"RECONCILING": 6,
"RECONCILING_FAILED": 7,
+ "REBOOTED": 8,
}
func (x OperStatus_Types) String() string {
@@ -497,41 +501,42 @@
func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
var fileDescriptor_c2e3fd231961e826 = []byte{
- // 570 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x5d, 0x4f, 0xdb, 0x30,
- 0x14, 0x25, 0x09, 0x14, 0xb8, 0x85, 0x12, 0xcc, 0x98, 0x3a, 0xb4, 0x87, 0x2a, 0x2f, 0xb0, 0x49,
- 0x6b, 0x25, 0xb6, 0x3d, 0xee, 0x21, 0x24, 0x5e, 0x67, 0x01, 0x4e, 0xe5, 0xa4, 0x20, 0xf1, 0x12,
- 0x85, 0xc6, 0x03, 0x6b, 0xad, 0x1d, 0x25, 0xa6, 0x1a, 0x7b, 0xdc, 0x3f, 0xd8, 0x5f, 0xdd, 0x2f,
- 0x98, 0x9c, 0x86, 0x15, 0xa4, 0xbe, 0xe5, 0x9c, 0x73, 0x73, 0xbf, 0x8e, 0x2f, 0x1c, 0xcd, 0xd5,
- 0x54, 0xdf, 0x67, 0x69, 0x51, 0x2a, 0xad, 0xaa, 0xc1, 0x44, 0xcd, 0x66, 0x4a, 0xf6, 0x6b, 0x84,
- 0x5a, 0x0b, 0xe4, 0xbd, 0x02, 0x9b, 0x84, 0xa8, 0x03, 0xb6, 0xc8, 0xbb, 0x56, 0xcf, 0x3a, 0xd9,
- 0x66, 0xb6, 0xc8, 0xbd, 0x63, 0x70, 0x48, 0x58, 0xa1, 0x1e, 0x6c, 0x08, 0xcd, 0x67, 0x55, 0xd7,
- 0xea, 0x39, 0x27, 0xed, 0x53, 0xe8, 0x37, 0x29, 0x48, 0xc8, 0x16, 0x82, 0xf7, 0x0b, 0x20, 0x50,
- 0x52, 0xf2, 0x89, 0x16, 0x4a, 0xa2, 0x23, 0xd8, 0xe2, 0x32, 0x2f, 0x94, 0x90, 0xba, 0x49, 0xf6,
- 0x1f, 0xa3, 0x1e, 0xb4, 0x27, 0x4a, 0x6a, 0xfe, 0x53, 0x13, 0xf9, 0x5d, 0x75, 0xed, 0x5a, 0x7e,
- 0x4e, 0xa1, 0x3e, 0x1c, 0xfc, 0xe0, 0xbc, 0x48, 0xb3, 0xa9, 0x98, 0xf3, 0x54, 0x48, 0xcd, 0xcb,
- 0x79, 0x36, 0xed, 0x3a, 0x3d, 0xeb, 0xc4, 0x61, 0xfb, 0x46, 0xf2, 0x8d, 0x42, 0x1a, 0xc1, 0xbb,
- 0x07, 0xf0, 0xf3, 0x99, 0x90, 0xb1, 0xce, 0x34, 0xf7, 0x6e, 0x60, 0x23, 0x79, 0x2c, 0x78, 0x85,
- 0xda, 0xb0, 0x39, 0xa6, 0xe7, 0x34, 0xba, 0xa6, 0xee, 0x1a, 0x42, 0xd0, 0x19, 0x31, 0x3c, 0x62,
- 0xd1, 0x15, 0x89, 0x49, 0x44, 0x71, 0xe8, 0x5a, 0x26, 0x00, 0x53, 0xff, 0xec, 0x02, 0x87, 0xae,
- 0x8d, 0x76, 0x60, 0x2b, 0x24, 0xf1, 0x02, 0x39, 0xe8, 0x10, 0xf6, 0xc3, 0xe8, 0x9a, 0x5e, 0x44,
- 0x7e, 0x48, 0xe8, 0x30, 0x25, 0x97, 0xfe, 0x10, 0xbb, 0xeb, 0xde, 0x1f, 0x0b, 0x20, 0x2a, 0x78,
- 0x69, 0x2a, 0x3d, 0x54, 0xde, 0x6f, 0x6b, 0x65, 0xad, 0x0e, 0x40, 0x48, 0xe2, 0x20, 0xba, 0xc2,
- 0xac, 0xae, 0xd3, 0x01, 0xf0, 0x83, 0x84, 0x5c, 0xf9, 0x09, 0xa1, 0x43, 0xd7, 0x36, 0xc1, 0x09,
- 0x8e, 0x6b, 0xe0, 0x20, 0x80, 0x56, 0x2d, 0x62, 0x77, 0xdd, 0x7c, 0x7f, 0xf5, 0x89, 0xe9, 0x60,
- 0x03, 0xed, 0x41, 0x9b, 0xe1, 0x20, 0xa2, 0x01, 0xb9, 0x30, 0x81, 0x2d, 0xf4, 0x1a, 0xd0, 0x33,
- 0x22, 0x6d, 0x02, 0x37, 0x3d, 0x0c, 0xbb, 0xcd, 0xe6, 0x9b, 0xae, 0x3e, 0xad, 0x6c, 0x6a, 0x0f,
- 0xda, 0x63, 0xca, 0xb0, 0x1f, 0x7c, 0x33, 0x33, 0xba, 0x16, 0xda, 0x85, 0xed, 0x25, 0xb4, 0xbd,
- 0xbf, 0x16, 0xec, 0x9a, 0xd1, 0x32, 0x63, 0x20, 0xe3, 0x55, 0x81, 0xbe, 0xc0, 0xfa, 0x44, 0xe5,
- 0xbc, 0x36, 0xb0, 0x73, 0xfa, 0xee, 0xc9, 0xf3, 0x17, 0x41, 0xcf, 0x91, 0x7e, 0x28, 0x65, 0xa0,
- 0x72, 0xce, 0xea, 0xdf, 0xd0, 0x31, 0xec, 0x65, 0x79, 0x2e, 0x8c, 0x96, 0x4d, 0x53, 0xb1, 0xf4,
- 0xba, 0xb3, 0xa4, 0x8d, 0xdd, 0xde, 0x23, 0x1c, 0xac, 0xc8, 0x62, 0x2c, 0x88, 0x46, 0x98, 0xf9,
- 0x09, 0x89, 0x68, 0x1a, 0x8f, 0x83, 0x00, 0xc7, 0xb1, 0xbb, 0xf6, 0x92, 0x36, 0x4b, 0x18, 0x33,
- 0x33, 0xcd, 0x1b, 0x38, 0x5c, 0xd2, 0x63, 0x1a, 0x8f, 0x47, 0xa3, 0x88, 0x25, 0xb5, 0xb3, 0x2f,
- 0x24, 0x42, 0xd3, 0x11, 0x8b, 0x86, 0xcc, 0x24, 0x73, 0xde, 0xbf, 0x85, 0x9d, 0x84, 0x57, 0xfa,
- 0x52, 0xe5, 0xfc, 0x9c, 0x3f, 0x56, 0xe6, 0x11, 0x64, 0x85, 0x48, 0x35, 0xaf, 0xb4, 0xbb, 0x76,
- 0x86, 0xe1, 0x40, 0x95, 0x77, 0x7d, 0x55, 0x70, 0x39, 0x51, 0x65, 0xde, 0x5f, 0x5c, 0xd1, 0x4d,
- 0xff, 0x4e, 0xe8, 0xfb, 0x87, 0x5b, 0xb3, 0x8f, 0xc1, 0x93, 0x36, 0x58, 0x68, 0x1f, 0x9a, 0x0b,
- 0x9b, 0x7f, 0x1e, 0xdc, 0xa9, 0xe6, 0xce, 0x6e, 0x5b, 0x35, 0xf9, 0xf1, 0x5f, 0x00, 0x00, 0x00,
- 0xff, 0xff, 0x62, 0x34, 0x9d, 0xbf, 0x86, 0x03, 0x00, 0x00,
+ // 579 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0xdd, 0x4e, 0xdb, 0x30,
+ 0x14, 0x26, 0x09, 0x14, 0x38, 0x85, 0x12, 0xcc, 0x98, 0x3a, 0xb4, 0x8b, 0x2a, 0x37, 0xb0, 0x49,
+ 0x6b, 0x25, 0xb6, 0x5d, 0xee, 0x22, 0x24, 0x5e, 0x67, 0x01, 0x76, 0xe5, 0xa4, 0x20, 0x71, 0x13,
+ 0x85, 0xc6, 0x83, 0x68, 0xad, 0x1d, 0x25, 0xa6, 0x1a, 0x7b, 0x8a, 0xbd, 0xc1, 0xde, 0x71, 0x4f,
+ 0x30, 0x39, 0x0d, 0x2b, 0x48, 0xbd, 0xcb, 0xf7, 0x7d, 0x27, 0xe7, 0xef, 0xf3, 0x81, 0xa3, 0xb9,
+ 0x9a, 0xea, 0xfb, 0x34, 0x29, 0x4a, 0xa5, 0x55, 0x35, 0x98, 0xa8, 0xd9, 0x4c, 0xc9, 0x7e, 0x8d,
+ 0x50, 0x6b, 0x81, 0xbc, 0x57, 0x60, 0x93, 0x10, 0x75, 0xc0, 0xce, 0xb3, 0xae, 0xd5, 0xb3, 0x4e,
+ 0xb6, 0xb9, 0x9d, 0x67, 0xde, 0x31, 0x38, 0x24, 0xac, 0x50, 0x0f, 0x36, 0x72, 0x2d, 0x66, 0x55,
+ 0xd7, 0xea, 0x39, 0x27, 0xed, 0x53, 0xe8, 0x37, 0x29, 0x48, 0xc8, 0x17, 0x82, 0xf7, 0x0b, 0x20,
+ 0x50, 0x52, 0x8a, 0x89, 0xce, 0x95, 0x44, 0x47, 0xb0, 0x25, 0x64, 0x56, 0xa8, 0x5c, 0xea, 0x26,
+ 0xd9, 0x7f, 0x8c, 0x7a, 0xd0, 0x9e, 0x28, 0xa9, 0xc5, 0x4f, 0x4d, 0xe4, 0x77, 0xd5, 0xb5, 0x6b,
+ 0xf9, 0x39, 0x85, 0xfa, 0x70, 0xf0, 0x43, 0x88, 0x22, 0x49, 0xa7, 0xf9, 0x5c, 0x24, 0xb9, 0xd4,
+ 0xa2, 0x9c, 0xa7, 0xd3, 0xae, 0xd3, 0xb3, 0x4e, 0x1c, 0xbe, 0x6f, 0x24, 0xdf, 0x28, 0xa4, 0x11,
+ 0xbc, 0x7b, 0x00, 0x3f, 0x9b, 0xe5, 0x32, 0xd2, 0xa9, 0x16, 0xde, 0x0d, 0x6c, 0xc4, 0x8f, 0x85,
+ 0xa8, 0x50, 0x1b, 0x36, 0xc7, 0xf4, 0x9c, 0xb2, 0x6b, 0xea, 0xae, 0x21, 0x04, 0x9d, 0x11, 0xc7,
+ 0x23, 0xce, 0xae, 0x48, 0x44, 0x18, 0xc5, 0xa1, 0x6b, 0x99, 0x00, 0x4c, 0xfd, 0xb3, 0x0b, 0x1c,
+ 0xba, 0x36, 0xda, 0x81, 0xad, 0x90, 0x44, 0x0b, 0xe4, 0xa0, 0x43, 0xd8, 0x0f, 0xd9, 0x35, 0xbd,
+ 0x60, 0x7e, 0x48, 0xe8, 0x30, 0x21, 0x97, 0xfe, 0x10, 0xbb, 0xeb, 0xde, 0x1f, 0x0b, 0x80, 0x15,
+ 0xa2, 0x34, 0x95, 0x1e, 0x2a, 0xef, 0xb7, 0xb5, 0xb2, 0x56, 0x07, 0x20, 0x24, 0x51, 0xc0, 0xae,
+ 0x30, 0xaf, 0xeb, 0x74, 0x00, 0xfc, 0x20, 0x26, 0x57, 0x7e, 0x4c, 0xe8, 0xd0, 0xb5, 0x4d, 0x70,
+ 0x8c, 0xa3, 0x1a, 0x38, 0x08, 0xa0, 0x55, 0x8b, 0xd8, 0x5d, 0x37, 0xdf, 0x5f, 0x7d, 0x62, 0x3a,
+ 0xd8, 0x40, 0x7b, 0xd0, 0xe6, 0x38, 0x60, 0x34, 0x20, 0x17, 0x26, 0xb0, 0x85, 0x5e, 0x03, 0x7a,
+ 0x46, 0x24, 0x4d, 0xe0, 0xa6, 0x69, 0x9c, 0xe3, 0x33, 0xc6, 0x62, 0x1c, 0xba, 0x5b, 0x1e, 0x86,
+ 0xdd, 0xc6, 0x87, 0xa6, 0xc7, 0x4f, 0x2b, 0x5b, 0xdc, 0x83, 0xf6, 0x98, 0x72, 0xec, 0x07, 0xdf,
+ 0xcc, 0xc4, 0xae, 0x85, 0x76, 0x61, 0x7b, 0x09, 0x6d, 0xef, 0xaf, 0x05, 0xbb, 0x66, 0xd0, 0xd4,
+ 0xd8, 0xc9, 0x45, 0x55, 0xa0, 0x2f, 0xb0, 0x3e, 0x51, 0x99, 0xa8, 0xed, 0xec, 0x9c, 0xbe, 0x7b,
+ 0x7a, 0x01, 0x2f, 0x82, 0x9e, 0x23, 0xfd, 0x50, 0xca, 0x40, 0x65, 0x82, 0xd7, 0xbf, 0xa1, 0x63,
+ 0xd8, 0x4b, 0xb3, 0x2c, 0x37, 0x5a, 0x3a, 0x4d, 0xf2, 0xa5, 0xf3, 0x9d, 0x25, 0x6d, 0xcc, 0xf7,
+ 0x1e, 0xe1, 0x60, 0x45, 0x16, 0x63, 0x08, 0x1b, 0x61, 0xee, 0xc7, 0x84, 0xd1, 0x24, 0x1a, 0x07,
+ 0x01, 0x8e, 0x22, 0x77, 0xed, 0x25, 0x6d, 0x56, 0x32, 0xe6, 0x66, 0x9a, 0x37, 0x70, 0xb8, 0xa4,
+ 0xc7, 0x34, 0x1a, 0x8f, 0x46, 0x8c, 0xc7, 0xb5, 0xcf, 0x2f, 0x24, 0x42, 0x93, 0x11, 0x67, 0x43,
+ 0x6e, 0x92, 0x39, 0xef, 0xdf, 0xc2, 0x4e, 0x2c, 0x2a, 0x7d, 0xa9, 0x32, 0x71, 0x2e, 0x1e, 0x2b,
+ 0xb3, 0xd9, 0xb4, 0xc8, 0x13, 0x2d, 0x2a, 0xed, 0xae, 0x9d, 0x61, 0x38, 0x50, 0xe5, 0x5d, 0x5f,
+ 0x15, 0x42, 0x4e, 0x54, 0x99, 0xf5, 0x17, 0x37, 0x75, 0xd3, 0xbf, 0xcb, 0xf5, 0xfd, 0xc3, 0xad,
+ 0xd9, 0xc7, 0xe0, 0x49, 0x1b, 0x2c, 0xb4, 0x0f, 0xcd, 0xbd, 0xcd, 0x3f, 0x0f, 0xee, 0x54, 0x73,
+ 0x75, 0xb7, 0xad, 0x9a, 0xfc, 0xf8, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xf6, 0x0d, 0xae, 0x93, 0x94,
+ 0x03, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go
index 6dfa875..21e59ac 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/openolt/openolt.pb.go
@@ -66,6 +66,37 @@
return fileDescriptor_c072e7aa0dfd74d5, []int{5, 0}
}
+type IntfOperIndication_PONResourceRanges_Pool_PoolType int32
+
+const (
+ IntfOperIndication_PONResourceRanges_Pool_ONU_ID IntfOperIndication_PONResourceRanges_Pool_PoolType = 0
+ IntfOperIndication_PONResourceRanges_Pool_ALLOC_ID IntfOperIndication_PONResourceRanges_Pool_PoolType = 1
+ IntfOperIndication_PONResourceRanges_Pool_GEMPORT_ID IntfOperIndication_PONResourceRanges_Pool_PoolType = 2
+ IntfOperIndication_PONResourceRanges_Pool_FLOW_ID IntfOperIndication_PONResourceRanges_Pool_PoolType = 3
+)
+
+var IntfOperIndication_PONResourceRanges_Pool_PoolType_name = map[int32]string{
+ 0: "ONU_ID",
+ 1: "ALLOC_ID",
+ 2: "GEMPORT_ID",
+ 3: "FLOW_ID",
+}
+
+var IntfOperIndication_PONResourceRanges_Pool_PoolType_value = map[string]int32{
+ "ONU_ID": 0,
+ "ALLOC_ID": 1,
+ "GEMPORT_ID": 2,
+ "FLOW_ID": 3,
+}
+
+func (x IntfOperIndication_PONResourceRanges_Pool_PoolType) String() string {
+ return proto.EnumName(IntfOperIndication_PONResourceRanges_Pool_PoolType_name, int32(x))
+}
+
+func (IntfOperIndication_PONResourceRanges_Pool_PoolType) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{6, 0, 0, 0}
+}
+
type DeviceInfo_DeviceResourceRanges_Pool_PoolType int32
const (
@@ -957,13 +988,15 @@
}
type IntfOperIndication struct {
- Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
- IntfId uint32 `protobuf:"fixed32,2,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
- OperState string `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
- Speed uint32 `protobuf:"fixed32,4,opt,name=speed,proto3" json:"speed,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"`
+ IntfId uint32 `protobuf:"fixed32,2,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
+ OperState string `protobuf:"bytes,3,opt,name=oper_state,json=operState,proto3" json:"oper_state,omitempty"`
+ Speed uint32 `protobuf:"fixed32,4,opt,name=speed,proto3" json:"speed,omitempty"`
+ Technology string `protobuf:"bytes,5,opt,name=technology,proto3" json:"technology,omitempty"`
+ Ranges *IntfOperIndication_PONResourceRanges `protobuf:"bytes,6,opt,name=ranges,proto3" json:"ranges,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
func (m *IntfOperIndication) Reset() { *m = IntfOperIndication{} }
@@ -1019,6 +1052,118 @@
return 0
}
+func (m *IntfOperIndication) GetTechnology() string {
+ if m != nil {
+ return m.Technology
+ }
+ return ""
+}
+
+func (m *IntfOperIndication) GetRanges() *IntfOperIndication_PONResourceRanges {
+ if m != nil {
+ return m.Ranges
+ }
+ return nil
+}
+
+type IntfOperIndication_PONResourceRanges struct {
+ Pools []*IntfOperIndication_PONResourceRanges_Pool `protobuf:"bytes,3,rep,name=pools,proto3" json:"pools,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *IntfOperIndication_PONResourceRanges) Reset() { *m = IntfOperIndication_PONResourceRanges{} }
+func (m *IntfOperIndication_PONResourceRanges) String() string { return proto.CompactTextString(m) }
+func (*IntfOperIndication_PONResourceRanges) ProtoMessage() {}
+func (*IntfOperIndication_PONResourceRanges) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{6, 0}
+}
+
+func (m *IntfOperIndication_PONResourceRanges) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_IntfOperIndication_PONResourceRanges.Unmarshal(m, b)
+}
+func (m *IntfOperIndication_PONResourceRanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_IntfOperIndication_PONResourceRanges.Marshal(b, m, deterministic)
+}
+func (m *IntfOperIndication_PONResourceRanges) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_IntfOperIndication_PONResourceRanges.Merge(m, src)
+}
+func (m *IntfOperIndication_PONResourceRanges) XXX_Size() int {
+ return xxx_messageInfo_IntfOperIndication_PONResourceRanges.Size(m)
+}
+func (m *IntfOperIndication_PONResourceRanges) XXX_DiscardUnknown() {
+ xxx_messageInfo_IntfOperIndication_PONResourceRanges.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IntfOperIndication_PONResourceRanges proto.InternalMessageInfo
+
+func (m *IntfOperIndication_PONResourceRanges) GetPools() []*IntfOperIndication_PONResourceRanges_Pool {
+ if m != nil {
+ return m.Pools
+ }
+ return nil
+}
+
+type IntfOperIndication_PONResourceRanges_Pool struct {
+ Type IntfOperIndication_PONResourceRanges_Pool_PoolType `protobuf:"varint,1,opt,name=type,proto3,enum=openolt.IntfOperIndication_PONResourceRanges_Pool_PoolType" json:"type,omitempty"`
+ Start uint32 `protobuf:"fixed32,3,opt,name=start,proto3" json:"start,omitempty"`
+ End uint32 `protobuf:"fixed32,4,opt,name=end,proto3" json:"end,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *IntfOperIndication_PONResourceRanges_Pool) Reset() {
+ *m = IntfOperIndication_PONResourceRanges_Pool{}
+}
+func (m *IntfOperIndication_PONResourceRanges_Pool) String() string {
+ return proto.CompactTextString(m)
+}
+func (*IntfOperIndication_PONResourceRanges_Pool) ProtoMessage() {}
+func (*IntfOperIndication_PONResourceRanges_Pool) Descriptor() ([]byte, []int) {
+ return fileDescriptor_c072e7aa0dfd74d5, []int{6, 0, 0}
+}
+
+func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_Unmarshal(b []byte) error {
+ return xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.Unmarshal(m, b)
+}
+func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ return xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.Marshal(b, m, deterministic)
+}
+func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.Merge(m, src)
+}
+func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_Size() int {
+ return xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.Size(m)
+}
+func (m *IntfOperIndication_PONResourceRanges_Pool) XXX_DiscardUnknown() {
+ xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_IntfOperIndication_PONResourceRanges_Pool proto.InternalMessageInfo
+
+func (m *IntfOperIndication_PONResourceRanges_Pool) GetType() IntfOperIndication_PONResourceRanges_Pool_PoolType {
+ if m != nil {
+ return m.Type
+ }
+ return IntfOperIndication_PONResourceRanges_Pool_ONU_ID
+}
+
+func (m *IntfOperIndication_PONResourceRanges_Pool) GetStart() uint32 {
+ if m != nil {
+ return m.Start
+ }
+ return 0
+}
+
+func (m *IntfOperIndication_PONResourceRanges_Pool) GetEnd() uint32 {
+ if m != nil {
+ return m.End
+ }
+ return 0
+}
+
type OmciIndication struct {
IntfId uint32 `protobuf:"fixed32,1,opt,name=intf_id,json=intfId,proto3" json:"intf_id,omitempty"`
OnuId uint32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
@@ -1571,17 +1716,7 @@
DeviceSerialNumber string `protobuf:"bytes,17,opt,name=device_serial_number,json=deviceSerialNumber,proto3" json:"device_serial_number,omitempty"`
PreviouslyConnected bool `protobuf:"varint,19,opt,name=previously_connected,json=previouslyConnected,proto3" json:"previously_connected,omitempty"`
// Total number of pon intf ports on the device
- PonPorts uint32 `protobuf:"fixed32,12,opt,name=pon_ports,json=ponPorts,proto3" json:"pon_ports,omitempty"`
- // If using global per-device technology profile. To be deprecated
- Technology string `protobuf:"bytes,5,opt,name=technology,proto3" json:"technology,omitempty"`
- OnuIdStart uint32 `protobuf:"fixed32,6,opt,name=onu_id_start,json=onuIdStart,proto3" json:"onu_id_start,omitempty"`
- OnuIdEnd uint32 `protobuf:"fixed32,7,opt,name=onu_id_end,json=onuIdEnd,proto3" json:"onu_id_end,omitempty"`
- AllocIdStart uint32 `protobuf:"fixed32,8,opt,name=alloc_id_start,json=allocIdStart,proto3" json:"alloc_id_start,omitempty"`
- AllocIdEnd uint32 `protobuf:"fixed32,9,opt,name=alloc_id_end,json=allocIdEnd,proto3" json:"alloc_id_end,omitempty"`
- GemportIdStart uint32 `protobuf:"fixed32,10,opt,name=gemport_id_start,json=gemportIdStart,proto3" json:"gemport_id_start,omitempty"`
- GemportIdEnd uint32 `protobuf:"fixed32,11,opt,name=gemport_id_end,json=gemportIdEnd,proto3" json:"gemport_id_end,omitempty"`
- FlowIdStart uint32 `protobuf:"fixed32,13,opt,name=flow_id_start,json=flowIdStart,proto3" json:"flow_id_start,omitempty"`
- FlowIdEnd uint32 `protobuf:"fixed32,14,opt,name=flow_id_end,json=flowIdEnd,proto3" json:"flow_id_end,omitempty"`
+ PonPorts uint32 `protobuf:"fixed32,12,opt,name=pon_ports,json=ponPorts,proto3" json:"pon_ports,omitempty"`
Ranges []*DeviceInfo_DeviceResourceRanges `protobuf:"bytes,15,rep,name=ranges,proto3" json:"ranges,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
@@ -1669,69 +1804,6 @@
return 0
}
-func (m *DeviceInfo) GetTechnology() string {
- if m != nil {
- return m.Technology
- }
- return ""
-}
-
-func (m *DeviceInfo) GetOnuIdStart() uint32 {
- if m != nil {
- return m.OnuIdStart
- }
- return 0
-}
-
-func (m *DeviceInfo) GetOnuIdEnd() uint32 {
- if m != nil {
- return m.OnuIdEnd
- }
- return 0
-}
-
-func (m *DeviceInfo) GetAllocIdStart() uint32 {
- if m != nil {
- return m.AllocIdStart
- }
- return 0
-}
-
-func (m *DeviceInfo) GetAllocIdEnd() uint32 {
- if m != nil {
- return m.AllocIdEnd
- }
- return 0
-}
-
-func (m *DeviceInfo) GetGemportIdStart() uint32 {
- if m != nil {
- return m.GemportIdStart
- }
- return 0
-}
-
-func (m *DeviceInfo) GetGemportIdEnd() uint32 {
- if m != nil {
- return m.GemportIdEnd
- }
- return 0
-}
-
-func (m *DeviceInfo) GetFlowIdStart() uint32 {
- if m != nil {
- return m.FlowIdStart
- }
- return 0
-}
-
-func (m *DeviceInfo) GetFlowIdEnd() uint32 {
- if m != nil {
- return m.FlowIdEnd
- }
- return 0
-}
-
func (m *DeviceInfo) GetRanges() []*DeviceInfo_DeviceResourceRanges {
if m != nil {
return m.Ranges
@@ -4650,6 +4722,7 @@
func init() {
proto.RegisterEnum("openolt.OnuIndication_ActivationFailReason", OnuIndication_ActivationFailReason_name, OnuIndication_ActivationFailReason_value)
+ proto.RegisterEnum("openolt.IntfOperIndication_PONResourceRanges_Pool_PoolType", IntfOperIndication_PONResourceRanges_Pool_PoolType_name, IntfOperIndication_PONResourceRanges_Pool_PoolType_value)
proto.RegisterEnum("openolt.DeviceInfo_DeviceResourceRanges_Pool_PoolType", DeviceInfo_DeviceResourceRanges_Pool_PoolType_name, DeviceInfo_DeviceResourceRanges_Pool_PoolType_value)
proto.RegisterEnum("openolt.DeviceInfo_DeviceResourceRanges_Pool_SharingType", DeviceInfo_DeviceResourceRanges_Pool_SharingType_name, DeviceInfo_DeviceResourceRanges_Pool_SharingType_value)
proto.RegisterEnum("openolt.GroupMember_InterfaceType", GroupMember_InterfaceType_name, GroupMember_InterfaceType_value)
@@ -4662,6 +4735,8 @@
proto.RegisterType((*OnuDiscIndication)(nil), "openolt.OnuDiscIndication")
proto.RegisterType((*OnuIndication)(nil), "openolt.OnuIndication")
proto.RegisterType((*IntfOperIndication)(nil), "openolt.IntfOperIndication")
+ proto.RegisterType((*IntfOperIndication_PONResourceRanges)(nil), "openolt.IntfOperIndication.PONResourceRanges")
+ proto.RegisterType((*IntfOperIndication_PONResourceRanges_Pool)(nil), "openolt.IntfOperIndication.PONResourceRanges.Pool")
proto.RegisterType((*OmciIndication)(nil), "openolt.OmciIndication")
proto.RegisterType((*PacketIndication)(nil), "openolt.PacketIndication")
proto.RegisterType((*Interface)(nil), "openolt.Interface")
@@ -4715,342 +4790,340 @@
func init() { proto.RegisterFile("voltha_protos/openolt.proto", fileDescriptor_c072e7aa0dfd74d5) }
var fileDescriptor_c072e7aa0dfd74d5 = []byte{
- // 5350 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7c, 0x4b, 0x70, 0x1b, 0x49,
- 0x72, 0xb6, 0xc0, 0x07, 0x00, 0x26, 0x1e, 0x04, 0x8b, 0x6f, 0x52, 0x0f, 0xaa, 0x47, 0x33, 0xa3,
- 0x9d, 0xdd, 0x21, 0x45, 0x8e, 0xa8, 0x91, 0xe6, 0xdf, 0x7f, 0x77, 0x28, 0x12, 0x22, 0xe1, 0x21,
- 0x09, 0xba, 0x09, 0x49, 0xde, 0xdd, 0x98, 0x68, 0x37, 0xbb, 0x0b, 0x60, 0x2f, 0x1b, 0x5d, 0x3d,
- 0xdd, 0x05, 0x3e, 0x7c, 0xdc, 0xf0, 0xda, 0x17, 0xdf, 0x36, 0xec, 0x08, 0xfb, 0xe2, 0x70, 0xf8,
- 0xea, 0x8b, 0x6f, 0x8e, 0xf0, 0xd1, 0xe1, 0xf0, 0xc5, 0x37, 0x9f, 0x7d, 0x73, 0xf8, 0xe2, 0x93,
- 0x2f, 0x3e, 0x39, 0x1c, 0x8e, 0xca, 0xaa, 0x7e, 0x01, 0x20, 0x25, 0x8d, 0xe9, 0xf0, 0x45, 0xc1,
- 0xca, 0xfc, 0xf2, 0xcb, 0x7a, 0x64, 0x65, 0x65, 0x77, 0x17, 0x04, 0xcb, 0xe7, 0xcc, 0xe5, 0xa7,
- 0xa6, 0xe1, 0x07, 0x8c, 0xb3, 0x70, 0x8d, 0xf9, 0xd4, 0x63, 0x2e, 0x5f, 0xc5, 0x26, 0x29, 0xa8,
- 0xe6, 0xd2, 0xdd, 0x0e, 0x63, 0x1d, 0x97, 0xae, 0x99, 0xbe, 0xb3, 0x66, 0x7a, 0x1e, 0xe3, 0x26,
- 0x77, 0x98, 0x17, 0x4a, 0xd8, 0xd2, 0x4a, 0x96, 0x83, 0x53, 0xeb, 0x54, 0xfc, 0xdd, 0x76, 0x5c,
- 0xaa, 0x10, 0xf7, 0xb3, 0x08, 0x7a, 0xc9, 0x0d, 0x8b, 0x79, 0x6d, 0xa7, 0x73, 0xad, 0x9e, 0x7a,
- 0x61, 0xe2, 0x41, 0xfb, 0xc7, 0x31, 0x80, 0x86, 0x67, 0x3b, 0x16, 0xfa, 0x25, 0xeb, 0x50, 0x60,
- 0x2e, 0x37, 0x1c, 0xcf, 0x5e, 0xc8, 0xad, 0xe4, 0x1e, 0x97, 0x36, 0xe6, 0x56, 0xa3, 0x8e, 0x37,
- 0x5d, 0x9e, 0x00, 0xf7, 0xee, 0xe8, 0x79, 0x86, 0x02, 0xf2, 0x14, 0x8a, 0x8e, 0xc7, 0xdb, 0x68,
- 0x33, 0x82, 0x36, 0xf3, 0xb1, 0x4d, 0xc3, 0xe3, 0xed, 0x8c, 0x51, 0xc1, 0x91, 0x12, 0xb2, 0x05,
- 0x15, 0xb4, 0x62, 0x3e, 0x0d, 0xd0, 0x74, 0x14, 0x4d, 0x97, 0x33, 0xa6, 0x4d, 0x9f, 0x06, 0x19,
- 0xf3, 0x92, 0x93, 0x48, 0xc9, 0x4f, 0xa0, 0xcc, 0xbc, 0x9e, 0x61, 0x3b, 0xa1, 0x85, 0x0c, 0x63,
- 0xc8, 0xb0, 0x94, 0x74, 0xd8, 0xeb, 0xed, 0x38, 0xa1, 0x95, 0x21, 0x00, 0x16, 0x0b, 0x71, 0xac,
- 0x5e, 0x0f, 0x4d, 0xc7, 0xfb, 0xc7, 0xea, 0xf5, 0xfa, 0xc6, 0x8a, 0x02, 0x31, 0x56, 0xd6, 0xb5,
- 0x1c, 0xb4, 0xc9, 0xf7, 0x8d, 0xb5, 0xd9, 0xb5, 0x9c, 0xec, 0x58, 0x99, 0x94, 0x90, 0xa7, 0x50,
- 0xf0, 0xcf, 0xe4, 0xa4, 0x16, 0xd0, 0x68, 0x31, 0x36, 0x3a, 0x32, 0xad, 0x33, 0xda, 0x37, 0xaf,
- 0xfe, 0x19, 0xce, 0xeb, 0x73, 0x00, 0x9f, 0x05, 0xdc, 0x08, 0xb9, 0xc9, 0xc3, 0x85, 0x62, 0x9f,
- 0xb7, 0x23, 0x16, 0xf0, 0x63, 0x11, 0x2c, 0x21, 0x77, 0xac, 0x70, 0xef, 0x8e, 0x3e, 0xe1, 0x2b,
- 0x49, 0x28, 0x2c, 0xdb, 0x2e, 0xbb, 0x50, 0x96, 0x13, 0x7d, 0x96, 0xaf, 0x5c, 0x76, 0x91, 0xb5,
- 0x6c, 0x2b, 0x49, 0x48, 0xbe, 0x84, 0x09, 0xd3, 0x35, 0x83, 0x2e, 0xf6, 0x15, 0xd0, 0x70, 0x21,
- 0x36, 0xdc, 0x12, 0x9a, 0x4c, 0x57, 0x8b, 0xa6, 0x12, 0xbd, 0xcc, 0xc3, 0x98, 0x6d, 0x72, 0x53,
- 0xfb, 0xb7, 0x0a, 0x4c, 0xf6, 0xe1, 0xc4, 0x3c, 0xbb, 0x2c, 0x1c, 0x1a, 0x53, 0xfb, 0x2c, 0xcc,
- 0x8e, 0xdd, 0x45, 0x01, 0xd9, 0x81, 0xaa, 0x7d, 0xe5, 0x78, 0x1d, 0xa3, 0x63, 0x86, 0x7e, 0x2a,
- 0xb2, 0xee, 0xc6, 0x96, 0x3b, 0x42, 0xbd, 0x6b, 0x86, 0x7e, 0xc6, 0xbe, 0x6c, 0xa7, 0xc4, 0x22,
- 0xc6, 0xc4, 0x02, 0x27, 0x23, 0xea, 0x8f, 0xb1, 0xa6, 0xd7, 0x1b, 0x1c, 0x54, 0x89, 0x25, 0x52,
- 0xf2, 0x16, 0x66, 0x04, 0x45, 0xc8, 0xcd, 0x80, 0xf7, 0x7c, 0xa3, 0x6d, 0x3a, 0x6e, 0x2a, 0xd6,
- 0x1e, 0xa5, 0x99, 0x8e, 0x25, 0xe6, 0x95, 0xe9, 0xb8, 0xbd, 0x80, 0x66, 0x28, 0xa7, 0x58, 0x46,
- 0x2d, 0x88, 0x7f, 0x0e, 0x73, 0x48, 0xec, 0x74, 0x3c, 0xd3, 0x35, 0x6c, 0xda, 0x09, 0x4c, 0x9b,
- 0xa6, 0x62, 0xf1, 0xa3, 0x0c, 0x35, 0xa2, 0x76, 0x24, 0x28, 0xc3, 0x3c, 0xcd, 0x06, 0xb5, 0xe4,
- 0x17, 0x30, 0x8f, 0x1b, 0x23, 0x70, 0xda, 0xdc, 0x60, 0x6d, 0xe3, 0xc2, 0xf1, 0x6c, 0x76, 0x91,
- 0x0a, 0xda, 0x0c, 0xf9, 0x8e, 0x80, 0x35, 0xdb, 0x6f, 0x11, 0x34, 0x40, 0xde, 0xaf, 0x25, 0x2d,
- 0x10, 0xa3, 0x31, 0x5c, 0x16, 0x86, 0x46, 0xbc, 0x17, 0x64, 0x58, 0x7f, 0x9a, 0xa6, 0xdd, 0x67,
- 0x61, 0xd8, 0x6c, 0x8b, 0x4d, 0xb1, 0x7d, 0x6a, 0x7a, 0x1e, 0x75, 0x33, 0xd4, 0x55, 0xa6, 0x10,
- 0x6a, 0x8b, 0x44, 0xf3, 0x8c, 0x43, 0x09, 0x93, 0x79, 0x2e, 0x0e, 0x99, 0x67, 0x89, 0xb9, 0x76,
- 0x9e, 0x13, 0xb5, 0x20, 0x6e, 0xca, 0x24, 0xc1, 0x9d, 0x0b, 0xd9, 0x53, 0xb9, 0x1b, 0x7e, 0x98,
- 0x26, 0x6c, 0x05, 0xa6, 0x17, 0x76, 0x9d, 0x50, 0xa4, 0xc5, 0x86, 0xc7, 0x69, 0xd0, 0xa6, 0x01,
- 0xf5, 0x2c, 0xfa, 0xd6, 0x0c, 0x3c, 0xc7, 0xeb, 0xa8, 0xac, 0xd1, 0x72, 0x2e, 0xb0, 0xa7, 0xbf,
- 0x2b, 0x27, 0xd7, 0xb4, 0xb8, 0x73, 0x8e, 0x7e, 0x93, 0xce, 0xc2, 0xe0, 0x2c, 0x6c, 0xc5, 0xb0,
- 0x61, 0xfd, 0x15, 0x63, 0xce, 0x22, 0xa4, 0x87, 0x05, 0xe1, 0xc1, 0x0f, 0x98, 0x45, 0xc3, 0x50,
- 0xec, 0x02, 0x1a, 0x04, 0x4c, 0x66, 0xc9, 0x12, 0xba, 0xf8, 0x38, 0xed, 0xe2, 0x28, 0xc6, 0xd5,
- 0x05, 0x2c, 0xe3, 0x60, 0x96, 0x0d, 0xd3, 0x13, 0x0a, 0x8b, 0xc9, 0x1a, 0xb6, 0x8d, 0xf0, 0xca,
- 0xb3, 0x92, 0x51, 0x94, 0xd1, 0xc5, 0x67, 0x83, 0x6b, 0xf9, 0x0d, 0xbd, 0x3a, 0xbe, 0xf2, 0xac,
- 0xeb, 0x06, 0x22, 0x41, 0x11, 0x42, 0xb8, 0x79, 0x0d, 0xb3, 0x98, 0x60, 0x79, 0xcf, 0xf0, 0x99,
- 0x27, 0xd3, 0x11, 0xba, 0xa8, 0xa0, 0x8b, 0x87, 0x99, 0x74, 0xcb, 0x7b, 0x47, 0xcc, 0xc3, 0x2c,
- 0x34, 0xb0, 0xa4, 0x59, 0x1d, 0x71, 0xe1, 0x2e, 0x86, 0x37, 0xed, 0x5b, 0x83, 0x5e, 0x20, 0x37,
- 0x50, 0x15, 0xd9, 0x7f, 0x90, 0x89, 0xf1, 0x14, 0x76, 0x58, 0xff, 0xc5, 0x74, 0x0c, 0xc7, 0x90,
- 0xb7, 0x72, 0x10, 0x01, 0xed, 0x32, 0x4e, 0x0d, 0x9b, 0xb6, 0xa9, 0x25, 0x53, 0xf9, 0x24, 0xba,
- 0xd1, 0xd2, 0x6e, 0x74, 0x04, 0xed, 0x20, 0x26, 0xc3, 0x4f, 0xd8, 0x80, 0x92, 0x84, 0x72, 0x18,
- 0xb8, 0x08, 0x1d, 0xda, 0x35, 0x6c, 0xea, 0x3a, 0x1e, 0x95, 0xc3, 0x11, 0xfc, 0x35, 0xe4, 0x5f,
- 0x1f, 0x5c, 0x87, 0xdd, 0xfa, 0x81, 0xda, 0x52, 0x3b, 0x89, 0x49, 0xc6, 0xdd, 0x82, 0x5a, 0x8e,
- 0x5d, 0xda, 0xcd, 0x42, 0xc8, 0x39, 0xac, 0x60, 0x6c, 0x9d, 0x5e, 0x85, 0x8e, 0x65, 0xba, 0x06,
- 0xfd, 0xae, 0xe7, 0xf8, 0x5d, 0xea, 0xf1, 0x54, 0x8c, 0x4d, 0xa1, 0xe3, 0x1f, 0x65, 0x62, 0x4c,
- 0xe1, 0xeb, 0x11, 0x7c, 0x30, 0xd4, 0xc4, 0x60, 0xae, 0x85, 0x91, 0x5f, 0xc0, 0x74, 0x3a, 0xe2,
- 0x4c, 0xeb, 0x0c, 0x5d, 0x91, 0xc1, 0xdd, 0x28, 0xc7, 0xb8, 0x65, 0x9d, 0x79, 0xec, 0xc2, 0xa5,
- 0x76, 0x87, 0x0a, 0x9e, 0x8c, 0xa7, 0x49, 0x96, 0x42, 0x09, 0x72, 0x06, 0xcb, 0xb2, 0x10, 0x68,
- 0xb7, 0x8d, 0x80, 0x9a, 0xd6, 0xa9, 0x41, 0x2f, 0x2d, 0x4a, 0x6d, 0x6a, 0xa3, 0x93, 0x69, 0x74,
- 0xb2, 0x96, 0xad, 0x0b, 0xda, 0xb8, 0xc9, 0xb9, 0x63, 0xba, 0xba, 0xb0, 0xa8, 0x2b, 0x83, 0x8c,
- 0xa3, 0x79, 0x26, 0x91, 0xfd, 0x88, 0xf8, 0xb4, 0x5b, 0x85, 0x4a, 0xa6, 0x2a, 0x22, 0xf7, 0x00,
- 0xb0, 0xa0, 0x11, 0xa1, 0x4e, 0xf1, 0xb4, 0x9b, 0xd0, 0x27, 0x84, 0x44, 0x04, 0x2f, 0xd5, 0xf6,
- 0xa0, 0x9a, 0xad, 0x88, 0xc8, 0x3c, 0x14, 0x64, 0xf1, 0x24, 0xcf, 0xc6, 0x82, 0x9e, 0xc7, 0x02,
- 0xc9, 0xee, 0x63, 0x1a, 0xe9, 0x67, 0x3a, 0x85, 0xa9, 0x81, 0xf2, 0xe6, 0x7a, 0xb2, 0xaf, 0xa0,
- 0x12, 0xd2, 0xc0, 0x31, 0x5d, 0xc3, 0xeb, 0x75, 0x4f, 0x68, 0xa0, 0x4e, 0xd3, 0xd9, 0x78, 0x4a,
- 0x8e, 0x51, 0x7b, 0x88, 0x4a, 0xbd, 0x1c, 0xa6, 0x5a, 0xda, 0x6f, 0xc6, 0xa0, 0x92, 0x29, 0x87,
- 0xae, 0x77, 0x33, 0x0b, 0x79, 0xdc, 0xef, 0xf2, 0xb4, 0x2e, 0xe8, 0xe3, 0x62, 0xef, 0xf6, 0x0f,
- 0x65, 0xb4, 0x6f, 0x28, 0xe4, 0x01, 0x94, 0x4c, 0xbb, 0xeb, 0x78, 0x4a, 0x3f, 0x8e, 0x7a, 0x40,
- 0x91, 0x04, 0x0c, 0xf4, 0x7e, 0xec, 0xbd, 0x7b, 0x4f, 0xf6, 0xa1, 0x84, 0x89, 0x2d, 0xa0, 0x66,
- 0xc8, 0x3c, 0x3c, 0xfe, 0xaa, 0xd9, 0x78, 0x4b, 0x06, 0xb6, 0x9a, 0x4d, 0xc5, 0x3a, 0x9a, 0xe8,
- 0xd0, 0x8e, 0xff, 0xd6, 0xfe, 0x70, 0x04, 0x66, 0x86, 0x81, 0xc8, 0x47, 0xf0, 0xa0, 0x79, 0xf8,
- 0xda, 0xd8, 0xda, 0x6e, 0x35, 0xde, 0x6c, 0xb5, 0x1a, 0xcd, 0x43, 0xe3, 0xd5, 0x56, 0x63, 0xdf,
- 0xd0, 0xeb, 0x5b, 0xc7, 0xcd, 0x43, 0xe3, 0xb0, 0x79, 0x58, 0xaf, 0xdd, 0x21, 0x9f, 0x80, 0x76,
- 0x03, 0x48, 0xdf, 0x3a, 0xdc, 0x6d, 0x1c, 0xee, 0xd6, 0x72, 0xe4, 0x19, 0x6c, 0xdc, 0x80, 0x3b,
- 0xda, 0x3a, 0x3e, 0x7e, 0xdb, 0xd4, 0x77, 0x8c, 0xad, 0xd7, 0xad, 0xbd, 0xfa, 0x61, 0xab, 0xb1,
- 0x8d, 0x98, 0xda, 0x08, 0xd1, 0xe0, 0xfe, 0x0d, 0x76, 0xfb, 0xcd, 0xe3, 0xda, 0x28, 0x79, 0x08,
- 0xf7, 0x86, 0x61, 0x50, 0xb6, 0xbf, 0xa5, 0x1f, 0xd4, 0xc6, 0xae, 0x1b, 0xcb, 0xf1, 0xdb, 0x46,
- 0x6b, 0x7b, 0xcf, 0x68, 0xbe, 0xa9, 0xeb, 0xb5, 0x71, 0xed, 0x1c, 0xc8, 0x60, 0x81, 0x4e, 0x08,
- 0x8c, 0xf1, 0x2b, 0x3f, 0x0a, 0x7c, 0xfc, 0x3b, 0x1d, 0x2d, 0x23, 0x37, 0x44, 0xf8, 0x40, 0x58,
- 0xcc, 0xc0, 0x78, 0xe8, 0x53, 0x2a, 0x4b, 0xad, 0x82, 0x2e, 0x1b, 0x9a, 0x0e, 0xd5, 0x6c, 0x9d,
- 0xfd, 0xc1, 0xd1, 0x58, 0x83, 0x51, 0xff, 0x8c, 0xa3, 0xbf, 0xb2, 0x2e, 0xfe, 0xd4, 0xfe, 0x3d,
- 0x07, 0xb5, 0xfe, 0x3a, 0x9c, 0x2c, 0xc3, 0x04, 0xd2, 0xe2, 0x78, 0x64, 0x4c, 0xe2, 0x63, 0x4e,
- 0xab, 0x6f, 0x4c, 0xd7, 0xf9, 0x2c, 0xa6, 0x7d, 0xce, 0x42, 0xbe, 0xe7, 0x39, 0x42, 0x3c, 0x21,
- 0xc5, 0x3d, 0xcf, 0x91, 0x33, 0xd0, 0xa1, 0x5d, 0x2c, 0xf2, 0xe3, 0x5e, 0x4e, 0x28, 0x49, 0xc3,
- 0x16, 0x5e, 0xb0, 0x8c, 0x77, 0x64, 0xe1, 0x5a, 0xd0, 0xf3, 0xa2, 0x29, 0x15, 0x68, 0xe4, 0x31,
- 0x0c, 0xe8, 0x82, 0x9e, 0x17, 0xcd, 0x43, 0x46, 0xe6, 0x20, 0x6f, 0x31, 0x76, 0xe6, 0x50, 0x2c,
- 0xc8, 0xf2, 0xba, 0x6a, 0x45, 0x63, 0x1e, 0x4b, 0xc6, 0xfc, 0x08, 0x26, 0x64, 0xa9, 0x63, 0x5a,
- 0xd7, 0x0f, 0x47, 0xfb, 0x31, 0x4c, 0xec, 0x51, 0x33, 0xe0, 0x27, 0xd4, 0xe4, 0x64, 0x0d, 0xa6,
- 0x4f, 0xa3, 0x86, 0x2c, 0xd4, 0x78, 0x2f, 0xa0, 0xca, 0x82, 0xc4, 0xaa, 0xe3, 0x48, 0xa3, 0xfd,
- 0x55, 0x0e, 0x46, 0x9b, 0x5e, 0xef, 0x83, 0x57, 0x68, 0x60, 0xbf, 0x8f, 0xbe, 0xff, 0x7e, 0x17,
- 0x23, 0x75, 0x02, 0x15, 0x33, 0xe2, 0x4f, 0xf2, 0x29, 0x4c, 0xb2, 0xae, 0x65, 0x19, 0xd4, 0xb3,
- 0x82, 0x2b, 0x5f, 0xac, 0x2d, 0x2e, 0x67, 0x51, 0xaf, 0x0a, 0x71, 0x3d, 0x96, 0x6a, 0x7f, 0x9d,
- 0x03, 0x82, 0xe7, 0x4f, 0x47, 0x1c, 0x61, 0x3b, 0x4e, 0xc8, 0x4d, 0xcf, 0xa2, 0x1f, 0xdc, 0xfb,
- 0x17, 0xb0, 0xe8, 0x4a, 0x0a, 0x43, 0x3d, 0x9d, 0x22, 0x8f, 0xf1, 0x7b, 0x34, 0x60, 0x6a, 0x1d,
- 0xe7, 0x14, 0x40, 0x66, 0x70, 0x54, 0xff, 0x9c, 0x06, 0x8c, 0x3c, 0x81, 0x99, 0x61, 0xa6, 0x6a,
- 0x34, 0x64, 0xd0, 0x4a, 0xfb, 0x06, 0x0a, 0x62, 0x3b, 0x1c, 0x84, 0x9d, 0x5b, 0xd8, 0x07, 0xbf,
- 0xce, 0xc1, 0x84, 0x38, 0xeb, 0x71, 0x2b, 0x7c, 0x30, 0x5f, 0x2a, 0x28, 0xc7, 0x32, 0x41, 0x99,
- 0x8d, 0xf2, 0xf1, 0xfe, 0x28, 0x1f, 0xec, 0xc7, 0x0b, 0x28, 0xbf, 0xf6, 0x5d, 0xc7, 0x3b, 0x7b,
- 0x57, 0x4f, 0x94, 0xe9, 0x48, 0x62, 0xfa, 0xf7, 0x13, 0x00, 0x3b, 0xf4, 0xdc, 0xb1, 0x68, 0xc3,
- 0x6b, 0xe3, 0x7e, 0x38, 0xa7, 0x9e, 0xcd, 0x02, 0x95, 0x91, 0x54, 0x4b, 0xe4, 0x96, 0x2e, 0xb3,
- 0xa9, 0xab, 0xce, 0x55, 0xd9, 0x20, 0x3f, 0x80, 0xda, 0xa9, 0x19, 0xd8, 0x17, 0x66, 0x40, 0x8d,
- 0x73, 0x1a, 0x88, 0xc7, 0x01, 0x95, 0x96, 0x26, 0x23, 0xf9, 0x1b, 0x29, 0x16, 0xd0, 0xb6, 0x13,
- 0x74, 0x33, 0xd0, 0x31, 0x09, 0x8d, 0xe4, 0x11, 0x74, 0x19, 0x26, 0x6c, 0xec, 0x91, 0xe8, 0x7f,
- 0x4d, 0x26, 0x12, 0x29, 0x68, 0xd8, 0x62, 0xc5, 0x95, 0x32, 0x1b, 0xf1, 0x53, 0x88, 0x23, 0x52,
- 0x97, 0x0e, 0x77, 0xb2, 0x0e, 0x33, 0x7e, 0x40, 0xcf, 0x1d, 0xd6, 0x0b, 0xdd, 0x2b, 0xc3, 0x62,
- 0x9e, 0x47, 0x2d, 0x4e, 0x65, 0x91, 0x53, 0xd4, 0xa7, 0x13, 0xdd, 0x76, 0xa4, 0x12, 0x3d, 0x10,
- 0xe5, 0xb7, 0x98, 0xef, 0x10, 0xab, 0xfb, 0x82, 0x5e, 0xf4, 0x99, 0x77, 0x24, 0xda, 0xe4, 0x3e,
- 0x00, 0xa7, 0xd6, 0xa9, 0xc7, 0x5c, 0xd6, 0xb9, 0x8a, 0x0e, 0xdf, 0x44, 0x42, 0x56, 0xe4, 0xf3,
- 0x93, 0x63, 0xcb, 0x67, 0x60, 0x95, 0x70, 0x00, 0xd7, 0x1c, 0x1f, 0x69, 0xc9, 0x5d, 0x00, 0x85,
- 0xa0, 0xea, 0x49, 0xb0, 0xa0, 0x17, 0x51, 0x5f, 0xf7, 0x6c, 0xf2, 0x08, 0xaa, 0xa6, 0xeb, 0x32,
- 0x2b, 0x61, 0x90, 0x99, 0xb1, 0x8c, 0xd2, 0x88, 0x63, 0x05, 0xca, 0x31, 0x8a, 0x7a, 0x51, 0x9a,
- 0x04, 0x85, 0x11, 0x3c, 0x8f, 0xa1, 0x96, 0x44, 0x91, 0x62, 0x02, 0x44, 0x55, 0xe3, 0x58, 0x92,
- 0x5c, 0x8f, 0xa0, 0x9a, 0x42, 0x52, 0xf5, 0xd0, 0x54, 0xd0, 0xcb, 0x31, 0x4e, 0xf0, 0x69, 0x50,
- 0x51, 0xc9, 0x55, 0x91, 0x55, 0x10, 0x54, 0x92, 0x29, 0x56, 0x32, 0xdd, 0x87, 0x52, 0x84, 0xa1,
- 0xea, 0xb9, 0xa2, 0x20, 0xdf, 0x96, 0x48, 0x8e, 0xaf, 0x21, 0x1f, 0x98, 0x5e, 0x87, 0x86, 0x0b,
- 0x93, 0x2b, 0xa3, 0x8f, 0x4b, 0x1b, 0x8f, 0x93, 0xb7, 0x13, 0x71, 0x0c, 0xaa, 0x3f, 0x75, 0x1a,
- 0xb2, 0x5e, 0x60, 0x51, 0x1d, 0xf1, 0xba, 0xb2, 0x5b, 0xfa, 0xe3, 0x31, 0x98, 0x19, 0x06, 0x20,
- 0x8b, 0xd1, 0x4b, 0x35, 0x3b, 0x5c, 0xc8, 0xad, 0x8c, 0x3e, 0x2e, 0xa8, 0x37, 0x67, 0x76, 0xff,
- 0x8a, 0x8d, 0x0c, 0xac, 0xd8, 0x36, 0x8c, 0xfb, 0x8c, 0xb9, 0xe1, 0xc2, 0x28, 0x76, 0xea, 0xf3,
- 0xf7, 0xed, 0xd4, 0xea, 0x11, 0x63, 0xae, 0x2e, 0x6d, 0x97, 0xfe, 0x73, 0x04, 0xc6, 0x44, 0x9b,
- 0xfc, 0x56, 0xea, 0x48, 0xaf, 0x6e, 0x3c, 0xfb, 0x20, 0x32, 0xfc, 0x47, 0x1c, 0x98, 0xaa, 0x14,
- 0x38, 0x86, 0x42, 0x78, 0x6a, 0x06, 0x8e, 0xd7, 0xc1, 0x6e, 0x57, 0x37, 0x5e, 0x7c, 0x18, 0xdd,
- 0xb1, 0x34, 0x46, 0xc6, 0x88, 0x09, 0xeb, 0x04, 0x5c, 0xc0, 0x51, 0x55, 0x27, 0xe0, 0xd2, 0xd5,
- 0x60, 0x94, 0x7a, 0x51, 0xed, 0x20, 0xfe, 0xd4, 0xb6, 0xa0, 0x18, 0x75, 0x87, 0x00, 0xe4, 0x45,
- 0x89, 0xd3, 0xd8, 0xa9, 0xdd, 0x21, 0x65, 0x28, 0x6e, 0xed, 0xef, 0x37, 0xb7, 0x45, 0x2b, 0x47,
- 0xaa, 0x00, 0xbb, 0xf5, 0x83, 0xa3, 0xa6, 0xde, 0x12, 0xed, 0x11, 0x52, 0x82, 0xc2, 0xab, 0xfd,
- 0xe6, 0x5b, 0xd1, 0x18, 0xd5, 0x4e, 0xa1, 0x94, 0xea, 0x02, 0x99, 0x03, 0xb2, 0x53, 0xdf, 0x11,
- 0xf5, 0x57, 0x7d, 0xc7, 0x38, 0xaa, 0xeb, 0x46, 0xe3, 0xb0, 0xf5, 0xaa, 0x76, 0x87, 0x3c, 0x80,
- 0xe5, 0xe3, 0xbd, 0x2d, 0xbd, 0xbe, 0x63, 0xbc, 0xfc, 0x99, 0xb1, 0xb5, 0xbf, 0x8f, 0x72, 0xfc,
- 0xa3, 0x55, 0xdf, 0xde, 0xab, 0xe5, 0xc8, 0x0a, 0xdc, 0x1d, 0x02, 0x38, 0xde, 0x3a, 0xa8, 0x4b,
- 0xc4, 0x88, 0xf6, 0xfb, 0xa3, 0x00, 0xdb, 0xae, 0x19, 0x86, 0x4e, 0xdb, 0xa1, 0x01, 0xa6, 0x5c,
- 0x83, 0xfb, 0x71, 0x02, 0x1c, 0x67, 0x2d, 0xdf, 0xb1, 0xc9, 0x34, 0x8c, 0x33, 0xe3, 0x3c, 0x4e,
- 0xc4, 0x63, 0xec, 0x8d, 0x83, 0xe9, 0xd9, 0x91, 0x58, 0x35, 0x21, 0x4e, 0x84, 0x75, 0x10, 0x2b,
- 0xa7, 0x64, 0xcc, 0x11, 0xd8, 0x79, 0x28, 0x30, 0xc3, 0x3f, 0x71, 0x78, 0xa8, 0xf2, 0x72, 0x9e,
- 0x1d, 0x89, 0x16, 0xa6, 0x5c, 0xa5, 0x50, 0x15, 0x86, 0x23, 0x15, 0x8b, 0x50, 0xa4, 0xfc, 0x54,
- 0x56, 0x45, 0x72, 0xab, 0x17, 0x28, 0x3f, 0x8d, 0x8a, 0x22, 0x3b, 0xe4, 0x46, 0xd7, 0xb4, 0x70,
- 0x8b, 0x97, 0xf5, 0xbc, 0x1d, 0xf2, 0x03, 0xd3, 0x12, 0x8a, 0x30, 0xb0, 0x50, 0x31, 0x21, 0x15,
- 0x61, 0x60, 0x09, 0x85, 0x08, 0x72, 0x5f, 0xbe, 0x99, 0x56, 0x7b, 0xb9, 0xe0, 0xf8, 0x47, 0xf8,
- 0x7e, 0x7c, 0x16, 0x84, 0xb5, 0xe1, 0xf8, 0x6a, 0xf3, 0x8e, 0xdb, 0x21, 0x6f, 0xf8, 0x42, 0x2c,
- 0xa8, 0x1c, 0x5f, 0xe5, 0xb1, 0xf1, 0x30, 0xb0, 0x1a, 0xbe, 0x20, 0x12, 0x62, 0xb1, 0xbb, 0xd5,
- 0x3e, 0x16, 0x1e, 0x45, 0x82, 0x13, 0x2a, 0x41, 0x84, 0x2a, 0xb9, 0x81, 0x45, 0x2f, 0x51, 0xb5,
- 0x02, 0x65, 0xff, 0x8c, 0x1b, 0xdc, 0xec, 0xc8, 0xf1, 0x4c, 0xca, 0xad, 0xe4, 0x9f, 0xf1, 0x96,
- 0x89, 0x2b, 0xac, 0xfd, 0x7a, 0x14, 0x26, 0x44, 0xbd, 0xcf, 0xbc, 0xed, 0x2e, 0xa6, 0x0c, 0xd3,
- 0xb6, 0x0d, 0xd6, 0xe3, 0x34, 0x10, 0x56, 0xb8, 0x18, 0x45, 0xbd, 0x64, 0xda, 0x76, 0x53, 0xc8,
- 0x5a, 0x66, 0x47, 0xa4, 0xa9, 0x80, 0x76, 0xd9, 0x39, 0x4d, 0xc1, 0x46, 0x64, 0xb9, 0x21, 0xe5,
- 0x31, 0x72, 0x05, 0xca, 0x3c, 0x30, 0x7d, 0x83, 0x33, 0xe3, 0x94, 0x85, 0x32, 0x7c, 0x8b, 0x3a,
- 0x08, 0x59, 0x8b, 0xed, 0xb1, 0x90, 0x93, 0x1f, 0x01, 0x09, 0x68, 0xd7, 0x0c, 0xce, 0x14, 0x97,
- 0x5c, 0x8f, 0x31, 0xc4, 0xd5, 0xa4, 0x06, 0xd9, 0xe4, 0xca, 0x24, 0x68, 0xc7, 0xf3, 0x62, 0xf4,
- 0x78, 0x1a, 0xdd, 0x10, 0x0a, 0x89, 0x56, 0x63, 0x91, 0x50, 0xd1, 0xc9, 0x7c, 0x3c, 0x16, 0x44,
- 0x65, 0xc7, 0x92, 0xc0, 0x0a, 0xe9, 0xb1, 0xc4, 0xc8, 0x55, 0x98, 0xe6, 0x81, 0xe9, 0x85, 0xae,
- 0xc9, 0xd3, 0xe0, 0x22, 0x82, 0xa7, 0x62, 0xd5, 0x70, 0x7c, 0x32, 0x51, 0x13, 0x7d, 0xf8, 0x68,
- 0xae, 0xb4, 0xbf, 0xc9, 0x41, 0x5e, 0xae, 0x03, 0x79, 0x04, 0xa3, 0x56, 0x37, 0x7a, 0x91, 0x4c,
- 0x92, 0x77, 0xd3, 0xd1, 0x2a, 0xe9, 0x42, 0x3d, 0x7c, 0x67, 0xa4, 0xa2, 0x7d, 0x34, 0x13, 0xed,
- 0xc9, 0xf6, 0x1a, 0xeb, 0xdb, 0x5e, 0x72, 0xcb, 0x8c, 0x67, 0xb7, 0xcc, 0xf0, 0x9d, 0x91, 0xec,
- 0xbb, 0x42, 0x6a, 0xdf, 0x69, 0xff, 0x90, 0x87, 0xb1, 0x57, 0x2e, 0xbb, 0xc0, 0x83, 0xd0, 0xb2,
- 0x68, 0x18, 0x1a, 0xe9, 0x62, 0x66, 0x52, 0x2f, 0x4b, 0x69, 0x63, 0x58, 0x71, 0x35, 0x39, 0xf8,
- 0x00, 0x51, 0x92, 0x62, 0xf9, 0x00, 0xd1, 0xf7, 0x84, 0x90, 0x8f, 0x9f, 0x10, 0x3e, 0x83, 0xa9,
- 0xf0, 0xaa, 0xdb, 0xa5, 0x3c, 0x70, 0x2c, 0x23, 0x82, 0x10, 0x84, 0x4c, 0xc6, 0x8a, 0x57, 0x12,
- 0xbb, 0x0c, 0x78, 0xa4, 0xc9, 0x3d, 0x20, 0x8b, 0x98, 0xa2, 0x10, 0xe0, 0xa6, 0x5e, 0x84, 0x62,
- 0x74, 0x30, 0xe3, 0x16, 0x9d, 0xd4, 0x0b, 0xea, 0x50, 0x26, 0x9f, 0xc0, 0xa4, 0x47, 0xf9, 0x05,
- 0xc3, 0x88, 0x93, 0x23, 0x1a, 0x47, 0x44, 0x45, 0x89, 0x1b, 0xf1, 0x73, 0x5e, 0xaa, 0xfe, 0xcb,
- 0x23, 0x24, 0x55, 0xff, 0x7d, 0x01, 0x60, 0xc5, 0x99, 0x4e, 0xbd, 0x48, 0x9e, 0x8e, 0xd7, 0x35,
- 0x49, 0x82, 0x7a, 0x0a, 0x46, 0x3e, 0x85, 0xbc, 0x89, 0x2b, 0xae, 0x5e, 0x10, 0x4f, 0xf6, 0x05,
- 0x82, 0xae, 0xd4, 0x64, 0x09, 0x8a, 0x7e, 0xe0, 0xb0, 0xc0, 0xe1, 0x57, 0x18, 0x5e, 0x93, 0x7a,
- 0xdc, 0x4e, 0x3d, 0x2d, 0x95, 0x33, 0x4f, 0x4b, 0xa9, 0x4a, 0xb6, 0x92, 0xa9, 0x64, 0x17, 0xa1,
- 0xd8, 0x09, 0x58, 0xcf, 0x17, 0xe3, 0x50, 0xb9, 0x04, 0xdb, 0x72, 0x32, 0xd2, 0x1f, 0xe7, 0x04,
- 0x62, 0x12, 0x11, 0x15, 0x21, 0x3e, 0x92, 0xd2, 0x86, 0x4d, 0x3e, 0x86, 0x6a, 0x40, 0x7d, 0x57,
- 0x3c, 0x65, 0x52, 0x5c, 0x18, 0x2c, 0x09, 0x8b, 0x7a, 0x25, 0x96, 0x62, 0xb0, 0xec, 0xc1, 0xa4,
- 0x88, 0x31, 0x91, 0x1c, 0xd4, 0x4c, 0x2d, 0x4c, 0xe1, 0x69, 0xbe, 0x92, 0xf9, 0x8c, 0xb3, 0x2a,
- 0x42, 0xaf, 0xc5, 0x76, 0x25, 0xa4, 0xee, 0xf1, 0xe0, 0x4a, 0xaf, 0xf8, 0x69, 0x19, 0xa9, 0x27,
- 0xd5, 0x10, 0x67, 0x86, 0x49, 0xc3, 0x85, 0x69, 0x24, 0x7a, 0x90, 0x25, 0x52, 0xf0, 0x16, 0xdb,
- 0xa2, 0xa1, 0xe4, 0x89, 0xca, 0x25, 0x14, 0x2d, 0x7d, 0x0d, 0x64, 0xd0, 0x97, 0x38, 0x65, 0xcf,
- 0xe8, 0x95, 0x3a, 0x94, 0xc4, 0x9f, 0xe2, 0x34, 0x3e, 0x37, 0xdd, 0x1e, 0x8d, 0x9e, 0x0d, 0xb0,
- 0xf1, 0xd5, 0xc8, 0xf3, 0xdc, 0xd2, 0x4f, 0x61, 0x6a, 0xc0, 0xc9, 0xbb, 0x08, 0x8a, 0x29, 0x02,
- 0xad, 0x05, 0xe5, 0x4c, 0x25, 0xbc, 0x0c, 0x13, 0xb2, 0x9c, 0x8f, 0xf6, 0x52, 0x59, 0x2f, 0x4a,
- 0x41, 0xc3, 0x16, 0x4f, 0x7d, 0x4a, 0x19, 0xfa, 0xd4, 0x72, 0xda, 0x8e, 0xa5, 0x1e, 0x13, 0xaa,
- 0x52, 0x7c, 0xac, 0xa4, 0xda, 0x7f, 0x95, 0xa0, 0x9a, 0xfd, 0x96, 0x76, 0xfd, 0xf3, 0xc6, 0x22,
- 0x14, 0x83, 0x4b, 0xe3, 0xe4, 0x8a, 0xd3, 0x10, 0xd9, 0xf2, 0x7a, 0x21, 0xb8, 0x7c, 0x29, 0x9a,
- 0x22, 0xc8, 0x83, 0x4b, 0xc3, 0xc7, 0x07, 0x96, 0x50, 0x6d, 0xc6, 0x89, 0xe0, 0x52, 0x3e, 0xc1,
- 0x84, 0x98, 0x4a, 0x2f, 0x8d, 0x9e, 0x65, 0x8a, 0xa3, 0x48, 0x81, 0xc6, 0x10, 0x54, 0x0d, 0x2e,
- 0x5f, 0x0b, 0x71, 0x16, 0xd9, 0xcd, 0x20, 0xc7, 0x23, 0xe4, 0xc1, 0x20, 0xf2, 0x24, 0x83, 0xcc,
- 0x47, 0xc8, 0x97, 0x83, 0x48, 0xf9, 0x82, 0x37, 0x42, 0x16, 0x22, 0x24, 0xbe, 0xa2, 0x8d, 0x90,
- 0xcb, 0x30, 0x11, 0x5c, 0x1a, 0xed, 0xc0, 0xec, 0xd2, 0x10, 0x1f, 0x42, 0xf2, 0x7a, 0x31, 0xb8,
- 0x7c, 0x85, 0x6d, 0x71, 0x62, 0xc5, 0x4a, 0xe3, 0xd9, 0x53, 0x95, 0x4f, 0x20, 0xd2, 0x3f, 0x7b,
- 0x4a, 0x3e, 0x45, 0x47, 0x11, 0x62, 0xd3, 0x58, 0xdf, 0xf8, 0x12, 0x1f, 0x4c, 0xf2, 0x7a, 0x25,
- 0x46, 0x6d, 0xae, 0x6f, 0x7c, 0x49, 0x7e, 0x00, 0x53, 0x09, 0x70, 0x7d, 0xe3, 0xb9, 0xb1, 0xb1,
- 0xb9, 0xb9, 0x30, 0x13, 0x75, 0x49, 0x22, 0xd7, 0x37, 0x9e, 0x6f, 0x6c, 0x6e, 0x66, 0xa1, 0x1b,
- 0x9b, 0xcf, 0x8c, 0xcd, 0xf5, 0xf5, 0x85, 0xd9, 0x2c, 0x74, 0x63, 0xf3, 0xd9, 0xe6, 0xfa, 0x3a,
- 0xf9, 0x21, 0x90, 0x04, 0xba, 0xb9, 0xbe, 0x61, 0xac, 0x3f, 0xd9, 0xf8, 0x62, 0x61, 0x4e, 0xa6,
- 0xbd, 0x08, 0xbb, 0xb9, 0xbe, 0x21, 0xc4, 0xe4, 0x73, 0x98, 0x4e, 0x75, 0xe1, 0xc9, 0xc6, 0x53,
- 0x63, 0x7d, 0x73, 0xfd, 0xf9, 0xc2, 0x3c, 0xa2, 0x6b, 0x71, 0x27, 0x9e, 0x6c, 0x3c, 0x15, 0xf2,
- 0x3e, 0xf8, 0xe6, 0xfa, 0x0b, 0x63, 0xe3, 0xc9, 0xd3, 0x2f, 0x17, 0x16, 0xfa, 0xe0, 0x9b, 0xeb,
- 0x2f, 0x84, 0x3c, 0x0b, 0xdf, 0x78, 0xf2, 0xf4, 0xb9, 0xf1, 0xf4, 0xc9, 0x8b, 0xcd, 0x85, 0xc5,
- 0x2c, 0x5c, 0x28, 0x84, 0x3c, 0x0b, 0x7f, 0xfa, 0xe4, 0xc5, 0x33, 0xe3, 0xc5, 0xc6, 0xfa, 0xb3,
- 0x85, 0xa5, 0x2c, 0x5c, 0x28, 0x84, 0x9c, 0xac, 0xc1, 0x4c, 0x02, 0x7f, 0xb1, 0xb1, 0xfe, 0xa5,
- 0xb1, 0xfe, 0xec, 0x8b, 0xe7, 0x5f, 0x2c, 0x2c, 0x23, 0x7e, 0x2a, 0xc2, 0x0b, 0x0d, 0x2a, 0xc4,
- 0x71, 0x1f, 0x5c, 0x1a, 0x56, 0x60, 0xc9, 0x28, 0x08, 0x31, 0x7d, 0xe5, 0xf5, 0x52, 0x70, 0xb9,
- 0x1d, 0x58, 0x18, 0x01, 0x58, 0xda, 0xf1, 0x28, 0xba, 0x8b, 0x32, 0xba, 0x79, 0x12, 0xdd, 0x3c,
- 0x89, 0xee, 0x09, 0x19, 0xdd, 0x3c, 0x1d, 0xdd, 0xbc, 0x3f, 0xba, 0x41, 0xae, 0x10, 0x1f, 0x88,
- 0x6e, 0xde, 0x1f, 0xdd, 0xa5, 0x08, 0x79, 0x30, 0x88, 0xcc, 0x46, 0x77, 0x39, 0x42, 0xbe, 0x1c,
- 0x44, 0x66, 0xa3, 0xbb, 0x12, 0x21, 0xfb, 0xa3, 0x9b, 0xc7, 0xd1, 0x7d, 0x57, 0x46, 0x37, 0x4f,
- 0x45, 0x37, 0x4f, 0x47, 0xf7, 0x3d, 0x19, 0xdd, 0x3c, 0x13, 0xdd, 0xbc, 0x3f, 0xba, 0xef, 0xcb,
- 0xe8, 0xe6, 0xfd, 0xd1, 0xcd, 0x07, 0xa2, 0xfb, 0x41, 0xd4, 0xa5, 0xfe, 0xe8, 0xe6, 0x03, 0xd1,
- 0xbd, 0x92, 0x85, 0x26, 0xd1, 0xcd, 0x07, 0xa3, 0xfb, 0xa1, 0x8c, 0x6e, 0x3e, 0x18, 0xdd, 0x7c,
- 0x48, 0x74, 0x6b, 0x32, 0xa0, 0xf8, 0x90, 0xe8, 0xe6, 0x43, 0xa2, 0xfb, 0xa3, 0x3e, 0x78, 0x2a,
- 0xba, 0xf9, 0x90, 0xe8, 0x7e, 0x94, 0x85, 0xa7, 0xa3, 0x9b, 0x0f, 0x89, 0xee, 0x8f, 0xb3, 0xf0,
- 0x74, 0x74, 0xf3, 0x61, 0xd1, 0xfd, 0x89, 0x8c, 0x6e, 0x3e, 0x10, 0xdd, 0xf7, 0x00, 0x4e, 0x1c,
- 0x3f, 0x0a, 0xed, 0x49, 0x19, 0x9e, 0x27, 0x8e, 0xaf, 0x02, 0xfb, 0x2e, 0x4c, 0x70, 0xa7, 0x4b,
- 0x43, 0x6e, 0x76, 0x7d, 0x3c, 0x6e, 0x0b, 0x7a, 0x22, 0xd0, 0xfe, 0xb5, 0x80, 0xdf, 0x37, 0xde,
- 0x27, 0xff, 0x5f, 0xf3, 0xe6, 0xeb, 0x63, 0xa8, 0xfa, 0x2c, 0x74, 0xb8, 0x73, 0x4e, 0xe5, 0x37,
- 0x77, 0x95, 0xff, 0x2b, 0x91, 0x14, 0xbf, 0xa1, 0x0b, 0x98, 0x47, 0x3b, 0x66, 0x0a, 0x26, 0x4f,
- 0x80, 0x4a, 0x24, 0x95, 0xb0, 0xe7, 0xb0, 0x60, 0x53, 0xd7, 0xe9, 0x3a, 0xa2, 0x2a, 0xee, 0x3a,
- 0x61, 0x68, 0xd8, 0x94, 0x53, 0x2b, 0x7e, 0x71, 0x99, 0xd7, 0xe7, 0x62, 0xfd, 0x81, 0x13, 0x86,
- 0x3b, 0x91, 0xb6, 0x6f, 0x1a, 0xf2, 0xfd, 0xd3, 0xb0, 0x0c, 0xa2, 0x61, 0xf4, 0x3c, 0x27, 0x4e,
- 0xff, 0xc5, 0x13, 0xc7, 0x7f, 0x2d, 0xda, 0x64, 0x03, 0x66, 0xdb, 0xd4, 0x32, 0x2c, 0x16, 0x04,
- 0xf8, 0xd2, 0xc8, 0x08, 0xaf, 0xba, 0x27, 0xcc, 0x8d, 0x32, 0xc1, 0x74, 0x9b, 0x5a, 0xdb, 0x91,
- 0xee, 0x58, 0xaa, 0xc8, 0x33, 0x98, 0x97, 0x36, 0x36, 0xbd, 0x60, 0x81, 0x1d, 0x26, 0xd6, 0x2a,
- 0x45, 0xcc, 0xa2, 0x95, 0xd2, 0xc6, 0xe6, 0xe4, 0x27, 0xb0, 0x9c, 0xb5, 0xeb, 0x79, 0xca, 0xd2,
- 0x3c, 0x71, 0xa9, 0xca, 0x1c, 0x8b, 0x69, 0xdb, 0xd7, 0x69, 0x00, 0xf9, 0x08, 0x2a, 0x19, 0x7b,
- 0x95, 0x41, 0xca, 0x69, 0x0b, 0xf1, 0x88, 0x91, 0x1d, 0x90, 0x1c, 0xb7, 0x4c, 0x21, 0x53, 0xe9,
- 0xe1, 0xc8, 0x09, 0xf8, 0x04, 0x26, 0x2f, 0x3b, 0xb4, 0x6b, 0x9c, 0xd1, 0xab, 0x68, 0x06, 0x65,
- 0x12, 0xa9, 0x08, 0xf1, 0x37, 0xf4, 0x2a, 0x99, 0x45, 0xc4, 0xb9, 0x2c, 0x8c, 0xb2, 0x68, 0x51,
- 0x08, 0xf6, 0x59, 0x88, 0x24, 0xa2, 0x0a, 0x70, 0x99, 0xd9, 0x0d, 0x25, 0x8b, 0x8a, 0xc6, 0x4a,
- 0x70, 0x79, 0x84, 0x52, 0x64, 0x51, 0x07, 0x95, 0xc2, 0x79, 0xcc, 0x33, 0x1c, 0xdb, 0xa5, 0x18,
- 0x9a, 0x78, 0x50, 0x49, 0xe8, 0x21, 0xf3, 0x1a, 0xb6, 0x8b, 0xe5, 0x68, 0x70, 0x89, 0x57, 0x2d,
- 0xd4, 0x89, 0x9c, 0x0f, 0x2e, 0x9b, 0x5d, 0xcb, 0x21, 0xcf, 0x61, 0x51, 0x29, 0xa2, 0xbc, 0x97,
- 0x64, 0x78, 0x75, 0x38, 0xcf, 0x4a, 0xa8, 0x4a, 0x80, 0x51, 0xae, 0xcf, 0x14, 0x32, 0xd3, 0x37,
- 0x15, 0x32, 0x33, 0xfd, 0x85, 0x4c, 0xfa, 0x90, 0x98, 0xbd, 0xe9, 0x90, 0x98, 0xeb, 0x3f, 0x24,
- 0x1e, 0x42, 0xf9, 0x84, 0x06, 0x46, 0x40, 0x45, 0x09, 0x48, 0x6d, 0x75, 0xd0, 0x96, 0x4e, 0x68,
- 0xa0, 0x2b, 0x11, 0x79, 0x00, 0x25, 0xd7, 0xb2, 0x3b, 0xd1, 0xfc, 0xcb, 0xb3, 0x15, 0x84, 0x48,
- 0x4d, 0xbe, 0xe8, 0x9c, 0xed, 0x44, 0xfa, 0x45, 0xd5, 0x39, 0xdb, 0x19, 0xb6, 0xd1, 0x97, 0xfa,
- 0x37, 0xfa, 0x3f, 0xe7, 0xb0, 0x02, 0x7d, 0xdf, 0x62, 0xef, 0x1d, 0x1f, 0x67, 0xde, 0x51, 0xf0,
- 0xa5, 0x67, 0x78, 0x6c, 0x60, 0x86, 0x53, 0xf3, 0x34, 0xde, 0x3f, 0x4f, 0xe9, 0x19, 0xce, 0x67,
- 0x67, 0xf8, 0xe6, 0xf1, 0xfd, 0x6d, 0x0e, 0xaa, 0xd9, 0xbb, 0x5d, 0xe9, 0xe7, 0xc3, 0x5c, 0xe6,
- 0x0b, 0xd2, 0xf7, 0xaf, 0x64, 0xbf, 0x7f, 0x95, 0x70, 0x73, 0x1a, 0xfe, 0x1a, 0x2a, 0x99, 0xcb,
- 0x60, 0xd7, 0x2f, 0xcc, 0x1c, 0xe4, 0x43, 0x6e, 0xf2, 0x5e, 0xa8, 0xde, 0x7d, 0xaa, 0x96, 0xf6,
- 0x2d, 0x4c, 0x0f, 0xb9, 0x14, 0xf6, 0xc1, 0xd9, 0x3c, 0xa1, 0x1f, 0xcd, 0xd0, 0xff, 0xe5, 0x08,
- 0x7e, 0x1e, 0xea, 0xbf, 0xdc, 0xf6, 0x3d, 0x3e, 0x86, 0xbb, 0x2c, 0x34, 0x32, 0x2e, 0x26, 0x5c,
- 0x16, 0x1e, 0xa3, 0x40, 0xaa, 0x4f, 0x22, 0xf5, 0x58, 0xa4, 0x3e, 0x51, 0xea, 0xc7, 0x50, 0x73,
- 0x99, 0x6f, 0xc9, 0x73, 0x41, 0x81, 0xe4, 0x3b, 0xfb, 0xaa, 0x90, 0x8b, 0xf3, 0x40, 0x21, 0xd7,
- 0x61, 0x56, 0x21, 0x55, 0x46, 0x88, 0xe0, 0x79, 0xf9, 0x69, 0x41, 0xc2, 0x65, 0x3e, 0x50, 0x26,
- 0x62, 0xfb, 0xb1, 0xb6, 0x13, 0x01, 0x0b, 0xf2, 0x75, 0x98, 0x10, 0x29, 0xc0, 0x43, 0x28, 0x8b,
- 0xcc, 0x14, 0x23, 0x8a, 0x88, 0x28, 0xa1, 0x4c, 0x42, 0x34, 0x0a, 0xcb, 0x37, 0x5c, 0x85, 0xbb,
- 0xb5, 0xc5, 0xf8, 0xd3, 0x1c, 0x2c, 0x5d, 0x7f, 0x2f, 0xee, 0xb6, 0xdc, 0x90, 0x2f, 0x60, 0xce,
- 0xf1, 0xce, 0x69, 0x10, 0x52, 0x43, 0x3c, 0x8d, 0xcb, 0x79, 0x0c, 0x4c, 0x1e, 0x7d, 0x92, 0x9b,
- 0x56, 0xda, 0x97, 0x8e, 0xbc, 0xe9, 0xa2, 0x9b, 0x9c, 0x6a, 0xbf, 0x91, 0x7d, 0xbb, 0xe6, 0x5a,
- 0xdd, 0xad, 0xf5, 0x6d, 0x06, 0xc6, 0x93, 0x2a, 0xa2, 0xa0, 0xcb, 0x86, 0x60, 0xf7, 0xe8, 0x85,
- 0x41, 0xbf, 0x8b, 0xde, 0x5a, 0xe5, 0x3d, 0x7a, 0x51, 0xff, 0xce, 0xd6, 0x4e, 0xe1, 0xfe, 0xcd,
- 0x97, 0xf2, 0x6e, 0x6d, 0x6d, 0xfe, 0x2c, 0x27, 0x63, 0xe0, 0x9a, 0x6b, 0x7a, 0xff, 0xb7, 0x8b,
- 0xf3, 0xab, 0x1c, 0x68, 0xef, 0xbe, 0xf2, 0xf7, 0xbf, 0xbb, 0x48, 0xda, 0x77, 0xb8, 0x16, 0x37,
- 0x5c, 0x0d, 0xfc, 0x60, 0xff, 0x0f, 0xb2, 0xd7, 0x5c, 0xe4, 0xeb, 0xcd, 0xf4, 0xcd, 0x95, 0x33,
- 0x78, 0xf8, 0xce, 0x7b, 0x7c, 0xb7, 0x16, 0x01, 0x2d, 0x20, 0xba, 0x3a, 0x94, 0x53, 0xec, 0xa2,
- 0x38, 0x8a, 0x0e, 0x6f, 0xc3, 0x62, 0x3d, 0x8f, 0xa3, 0x17, 0x51, 0x1c, 0x29, 0xf0, 0xb6, 0x10,
- 0x5e, 0x9b, 0xdf, 0xff, 0x24, 0x07, 0x0b, 0xd7, 0x5d, 0x14, 0xfc, 0xe0, 0xae, 0x6f, 0x41, 0x25,
- 0xe9, 0xcc, 0xb0, 0xab, 0xc1, 0x83, 0x03, 0xd8, 0xbb, 0xa3, 0x97, 0x82, 0x44, 0xfa, 0xb2, 0x80,
- 0x1f, 0x9e, 0x78, 0xa8, 0x1d, 0xc2, 0xdd, 0x9b, 0xae, 0x61, 0x7e, 0x68, 0xdf, 0xb4, 0x5f, 0xc2,
- 0xca, 0xbb, 0xae, 0x2c, 0xde, 0xda, 0x52, 0xfd, 0x12, 0x16, 0xaf, 0xbd, 0xb7, 0xf8, 0x7d, 0xce,
- 0xb6, 0x54, 0x79, 0x36, 0xda, 0x57, 0x9e, 0x69, 0x7f, 0x91, 0x83, 0xc7, 0xef, 0x7b, 0x89, 0xf1,
- 0xd6, 0x76, 0xe0, 0xe7, 0x40, 0xd2, 0x17, 0x2b, 0x55, 0xdf, 0xe4, 0x76, 0x9c, 0x4a, 0x69, 0x54,
- 0x1f, 0xbb, 0xf0, 0xd1, 0x7b, 0x5c, 0x77, 0xbc, 0xb5, 0xe9, 0x77, 0x31, 0x1b, 0xbd, 0xe3, 0xca,
- 0xe3, 0xad, 0x79, 0xfb, 0xa3, 0x1c, 0x7c, 0xf2, 0x7e, 0x97, 0x1f, 0x6f, 0x6d, 0xfa, 0x97, 0xa0,
- 0xd8, 0x77, 0x8d, 0x25, 0x6e, 0x6b, 0xff, 0x91, 0x83, 0xd2, 0x6e, 0xc0, 0x7a, 0xfe, 0x01, 0xc5,
- 0x17, 0xba, 0x0f, 0xa1, 0xec, 0x44, 0x77, 0x92, 0x22, 0xc7, 0x15, 0xfc, 0xc9, 0x87, 0x94, 0x35,
- 0x6c, 0xd2, 0x80, 0x6a, 0x02, 0xc1, 0x0f, 0x16, 0xf2, 0x43, 0x72, 0x72, 0x0b, 0x37, 0x45, 0xb8,
- 0x1a, 0xdf, 0x70, 0xc2, 0x2f, 0xc6, 0x15, 0x27, 0xdd, 0x24, 0xf7, 0xa1, 0x24, 0x9e, 0xe3, 0xa2,
- 0x02, 0x7f, 0x14, 0x9d, 0x89, 0x02, 0xff, 0x48, 0x16, 0xf8, 0xe9, 0x2f, 0x07, 0x63, 0xa8, 0x8c,
- 0xdb, 0xda, 0xff, 0x87, 0x4a, 0x86, 0x9b, 0x14, 0x60, 0xf4, 0xa8, 0x79, 0x58, 0xbb, 0x43, 0x6a,
- 0x50, 0xae, 0x1f, 0x35, 0x0f, 0x8d, 0xf5, 0x5d, 0xe3, 0x68, 0xab, 0xb5, 0x57, 0xcb, 0x91, 0x29,
- 0xa8, 0x48, 0xc9, 0x13, 0x25, 0x1a, 0xd1, 0xfe, 0x60, 0x04, 0xc6, 0xb1, 0x9f, 0x99, 0x2f, 0x0a,
- 0x72, 0xb8, 0xf1, 0x17, 0x85, 0x1f, 0x43, 0xc1, 0x62, 0xdd, 0xae, 0xa9, 0x7e, 0xfb, 0x30, 0x30,
- 0xc6, 0xf4, 0x48, 0xc3, 0x6d, 0x89, 0xd4, 0x23, 0x13, 0xb2, 0x0a, 0x85, 0xae, 0x54, 0xa9, 0x6b,
- 0x00, 0x33, 0xc3, 0x66, 0x48, 0x8f, 0x40, 0xa9, 0x0f, 0x2a, 0x63, 0x37, 0x7e, 0x50, 0xd1, 0xbe,
- 0x81, 0xe9, 0x21, 0x8e, 0xc9, 0x24, 0x94, 0xb6, 0x76, 0x76, 0x8c, 0x83, 0xfa, 0xc1, 0xcb, 0xba,
- 0x7e, 0x5c, 0xbb, 0x43, 0x08, 0x54, 0xf5, 0xfa, 0x41, 0xf3, 0x4d, 0x3d, 0x96, 0xe5, 0x04, 0xe8,
- 0xb8, 0xde, 0x8a, 0x05, 0x23, 0xda, 0xb7, 0x00, 0x6f, 0x4c, 0xb7, 0x47, 0x8f, 0xcc, 0xc0, 0xec,
- 0x92, 0xfb, 0x30, 0xca, 0xbc, 0x9e, 0xfa, 0xb4, 0x57, 0xce, 0xdc, 0xab, 0x16, 0x0a, 0xb2, 0x96,
- 0xfe, 0x34, 0x50, 0xdd, 0x58, 0x5c, 0x8d, 0x7f, 0xcc, 0xb4, 0x8a, 0x2c, 0x62, 0x25, 0x56, 0x71,
- 0xa9, 0x25, 0x4e, 0xfb, 0xbb, 0x11, 0xa8, 0x1e, 0x31, 0x4f, 0xbf, 0x3c, 0x62, 0x17, 0x34, 0xd8,
- 0x31, 0xb9, 0x79, 0x6b, 0x71, 0xad, 0x67, 0x0f, 0xdc, 0x31, 0xec, 0xd1, 0x7a, 0xea, 0xd7, 0x39,
- 0x69, 0xaf, 0xab, 0x7a, 0x18, 0x3a, 0x07, 0xd4, 0x0c, 0x7b, 0x01, 0x6e, 0xed, 0xe1, 0xb7, 0x4b,
- 0xd5, 0x9b, 0x6e, 0x5f, 0x58, 0x19, 0x5d, 0x6a, 0x7a, 0x86, 0x7d, 0xd2, 0xc5, 0x2a, 0x2e, 0xa7,
- 0x57, 0x03, 0xc9, 0x76, 0x40, 0x4d, 0x6f, 0xe7, 0xa4, 0x2b, 0xd2, 0xf6, 0xb5, 0x9c, 0x64, 0x06,
- 0x6a, 0x43, 0x6e, 0x9f, 0xde, 0x85, 0x85, 0xac, 0xd4, 0xd8, 0xa9, 0xef, 0x37, 0x0e, 0x1a, 0xad,
- 0xba, 0x5e, 0xcb, 0x91, 0x45, 0x98, 0xed, 0xd3, 0x6e, 0x6d, 0x6f, 0xd7, 0x8f, 0xc5, 0x22, 0x15,
- 0x60, 0xbc, 0xde, 0xf5, 0xf9, 0xd5, 0xc6, 0x9f, 0xcf, 0x40, 0xa1, 0x29, 0x07, 0x48, 0x76, 0x00,
- 0x76, 0x9c, 0xd0, 0x3c, 0x71, 0x69, 0xd3, 0xe5, 0xa4, 0x1a, 0x0f, 0x1c, 0x91, 0x4b, 0x7d, 0x6d,
- 0x6d, 0xee, 0x57, 0xff, 0xf4, 0x2f, 0xbf, 0x19, 0xa9, 0x69, 0xa5, 0xb5, 0xf3, 0xf5, 0x35, 0x65,
- 0xf7, 0x55, 0xee, 0x33, 0xf2, 0x0a, 0x4a, 0x3a, 0xa5, 0xde, 0xfb, 0xd2, 0xcc, 0x23, 0xcd, 0x94,
- 0x56, 0x16, 0x34, 0x91, 0xa1, 0xe0, 0xa9, 0x43, 0x49, 0x55, 0x53, 0xb4, 0xe9, 0xf5, 0x48, 0x26,
- 0x76, 0x06, 0x58, 0x16, 0x90, 0x85, 0x68, 0x15, 0xc1, 0x52, 0x97, 0xce, 0xbd, 0x9e, 0xa0, 0xd9,
- 0x83, 0x4a, 0x7c, 0xea, 0xbe, 0x07, 0xd1, 0x22, 0x12, 0x4d, 0x6b, 0xd5, 0xd4, 0xa8, 0x14, 0xd3,
- 0x36, 0x4c, 0xec, 0x50, 0x97, 0x7e, 0x70, 0x77, 0x62, 0x23, 0x41, 0xd2, 0x00, 0x50, 0x97, 0xfb,
- 0x9a, 0x3d, 0x4e, 0x6a, 0x99, 0x1f, 0x9a, 0x1d, 0x84, 0x9d, 0x9b, 0xfb, 0x93, 0x58, 0x0a, 0xaa,
- 0x26, 0x94, 0xe3, 0x9b, 0x7d, 0x82, 0x8c, 0x64, 0x2e, 0xf7, 0xa3, 0x78, 0x80, 0x6e, 0x19, 0xe9,
- 0x66, 0xb5, 0x1a, 0xd2, 0xa5, 0xac, 0x05, 0xe1, 0xef, 0xc0, 0x64, 0xfa, 0x8e, 0x9e, 0xe0, 0x4c,
- 0xee, 0x67, 0xa6, 0x35, 0x03, 0xb4, 0xf7, 0x91, 0x76, 0x41, 0x9b, 0x16, 0xb4, 0x7d, 0x1c, 0x82,
- 0xf9, 0x6b, 0x28, 0xbc, 0x72, 0xd9, 0xc5, 0x96, 0x6d, 0x93, 0x4a, 0xe6, 0x1b, 0xe5, 0xcd, 0x51,
- 0xa5, 0x6c, 0x64, 0x54, 0x81, 0x68, 0xe9, 0x78, 0x47, 0xe1, 0x5d, 0x24, 0x99, 0x49, 0x4b, 0xcc,
- 0x04, 0xcf, 0x31, 0x54, 0xe3, 0xdb, 0xaf, 0xdb, 0xa7, 0xd4, 0x3a, 0x1b, 0x08, 0xd0, 0x64, 0x1a,
- 0x63, 0xa0, 0x76, 0x0f, 0x09, 0xe7, 0x35, 0x22, 0x08, 0xb3, 0xf6, 0x82, 0xf4, 0x00, 0x4a, 0x32,
- 0xe6, 0x8e, 0x98, 0xd7, 0x68, 0xa7, 0x16, 0x22, 0x3e, 0x50, 0x06, 0xba, 0xb8, 0x84, 0x8c, 0x33,
- 0xda, 0x64, 0x12, 0xb0, 0x68, 0xac, 0x16, 0x56, 0x45, 0xde, 0xfb, 0xf3, 0x65, 0x16, 0x36, 0x6d,
- 0x2d, 0x08, 0x75, 0xa8, 0xec, 0x52, 0x9e, 0xba, 0x43, 0xd9, 0x3f, 0xe6, 0xe9, 0x21, 0x77, 0xb6,
- 0xb4, 0xbb, 0x48, 0x39, 0xa7, 0x4d, 0x09, 0xca, 0x8c, 0xbd, 0xe0, 0xfc, 0x29, 0xe4, 0x75, 0x7a,
- 0xc2, 0xd8, 0xbb, 0x77, 0xf8, 0x2c, 0xf2, 0x4c, 0x6a, 0x20, 0x77, 0xb8, 0xb0, 0x11, 0x04, 0xaf,
- 0x61, 0x6a, 0x9b, 0xb9, 0x2e, 0xb5, 0xd2, 0x6f, 0xee, 0xde, 0xc5, 0xb5, 0x82, 0x5c, 0x4b, 0xda,
- 0xac, 0xe0, 0x1a, 0x30, 0x17, 0xb4, 0x3f, 0x83, 0xda, 0x2e, 0xe5, 0xd9, 0x97, 0xff, 0xd9, 0xcd,
- 0x3a, 0xd7, 0xf7, 0x03, 0x3f, 0x85, 0xd2, 0x1e, 0x20, 0xf7, 0xa2, 0x36, 0xa3, 0xc6, 0x9b, 0xd1,
- 0x0a, 0xea, 0x33, 0x98, 0xd9, 0xa5, 0x7c, 0xf0, 0x75, 0xe3, 0xb0, 0x8d, 0x97, 0xfc, 0x62, 0x75,
- 0x00, 0xaf, 0x7d, 0x84, 0x8e, 0xee, 0x69, 0x0b, 0xca, 0xd1, 0x00, 0x42, 0x38, 0x0b, 0x60, 0x7e,
- 0x3b, 0xa0, 0x26, 0xa7, 0xad, 0xc0, 0x6c, 0xb7, 0x1d, 0xeb, 0xd8, 0x3a, 0xa5, 0x76, 0xcf, 0x15,
- 0xe7, 0xfa, 0x83, 0xd5, 0xcc, 0x6f, 0x86, 0x07, 0x00, 0x03, 0xb3, 0xf6, 0x09, 0x3a, 0x5c, 0xd1,
- 0x96, 0x71, 0xd6, 0x86, 0xb3, 0x2a, 0x9f, 0x72, 0xa7, 0xdc, 0xb6, 0xcf, 0x6b, 0x58, 0x85, 0xcf,
- 0x36, 0x4c, 0x67, 0x7a, 0xf4, 0xdb, 0x3d, 0xda, 0xa3, 0x21, 0x59, 0x1e, 0xea, 0x4f, 0x2a, 0x07,
- 0x7c, 0x69, 0xe8, 0xeb, 0xae, 0x36, 0x3f, 0x30, 0x3e, 0x69, 0xa0, 0xfc, 0x64, 0x7a, 0xf1, 0x3f,
- 0xf6, 0x33, 0x84, 0x4d, 0xf8, 0xf9, 0x7f, 0x50, 0x93, 0xdb, 0x39, 0x55, 0x78, 0x5f, 0xbf, 0xdd,
- 0x12, 0x90, 0x76, 0xe7, 0x49, 0x8e, 0x7c, 0x0b, 0xb3, 0x47, 0x34, 0x68, 0xb3, 0xa0, 0x8b, 0xf5,
- 0x58, 0xd3, 0xa7, 0x41, 0x3f, 0x03, 0x2a, 0x06, 0x7a, 0xf6, 0x08, 0x7b, 0x76, 0x5f, 0x5b, 0x14,
- 0x3d, 0x1b, 0x4a, 0x21, 0x0f, 0x9f, 0x92, 0x3c, 0x8c, 0x64, 0xa1, 0xfa, 0x2e, 0xd2, 0x4c, 0x8e,
- 0x4a, 0x19, 0x0a, 0xaa, 0xb7, 0x50, 0xda, 0xa5, 0xbc, 0x7e, 0xc9, 0xb1, 0x4a, 0x23, 0xc9, 0x88,
- 0x92, 0xda, 0x6f, 0x69, 0x3e, 0x55, 0xcc, 0xe9, 0x94, 0xf7, 0x02, 0x0f, 0x95, 0x61, 0x96, 0x38,
- 0x45, 0x23, 0x88, 0xbf, 0xc5, 0x1f, 0x41, 0xc9, 0x17, 0x02, 0xf8, 0x5e, 0xf6, 0x98, 0x72, 0x32,
- 0xb7, 0xaa, 0x7e, 0xff, 0x9e, 0x55, 0xdd, 0x9c, 0x1e, 0x06, 0x68, 0x04, 0xbd, 0x0f, 0x8b, 0xbb,
- 0x94, 0xef, 0x0f, 0xbf, 0xab, 0x9f, 0xcd, 0x13, 0xcb, 0xd9, 0x5f, 0xb0, 0x65, 0x7e, 0x41, 0xa0,
- 0x3d, 0x46, 0x4f, 0x9a, 0x76, 0x4f, 0x0d, 0x61, 0x38, 0xa3, 0xf0, 0x78, 0x0a, 0xb3, 0x43, 0xf5,
- 0x1f, 0xe2, 0x2d, 0xb3, 0xbc, 0x43, 0xd9, 0x84, 0xa7, 0x16, 0xa6, 0xf9, 0xa4, 0x4c, 0xed, 0xf3,
- 0x30, 0x7f, 0x4d, 0x25, 0x3b, 0x90, 0xe8, 0x13, 0xf5, 0x57, 0xb9, 0xcf, 0x5e, 0x7e, 0x0b, 0xcb,
- 0x2c, 0xe8, 0xa0, 0xad, 0xc5, 0x02, 0x7b, 0x55, 0xfe, 0xdf, 0x03, 0x11, 0xd7, 0xcb, 0xca, 0x1b,
- 0x6c, 0x8b, 0x1a, 0xb2, 0xb9, 0xdf, 0xfa, 0xf9, 0x5a, 0xc7, 0xe1, 0xa7, 0xbd, 0x93, 0x55, 0x8b,
- 0x75, 0xd7, 0x22, 0x93, 0x35, 0x69, 0xf2, 0xb9, 0xfa, 0xef, 0x0a, 0xce, 0x37, 0xd7, 0x3a, 0x2c,
- 0xfa, 0xaf, 0x13, 0x4e, 0xf2, 0x28, 0xfd, 0xe2, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xb0, 0xed,
- 0x77, 0x2e, 0x5a, 0x41, 0x00, 0x00,
+ // 5323 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5c, 0x4d, 0x70, 0x23, 0x49,
+ 0x56, 0x6e, 0xd9, 0xb2, 0x24, 0x3f, 0x59, 0xb2, 0x9c, 0xfe, 0xb7, 0xfb, 0xc7, 0x5d, 0xf3, 0xd7,
+ 0x3b, 0xbb, 0x63, 0xb7, 0xd5, 0xed, 0x9e, 0xee, 0xd9, 0x65, 0x77, 0xdc, 0xb6, 0xda, 0xd6, 0x8c,
+ 0x6d, 0x99, 0xb2, 0xba, 0x9b, 0xdd, 0x8d, 0x89, 0xa2, 0x5c, 0x95, 0x92, 0x6b, 0x5d, 0xaa, 0xac,
+ 0xa9, 0x4a, 0xf9, 0x87, 0xe3, 0x06, 0x0b, 0x17, 0x6e, 0x1b, 0x10, 0x01, 0x1c, 0x08, 0xe0, 0xca,
+ 0x85, 0x1b, 0x11, 0xdc, 0xe0, 0xc0, 0x85, 0x1b, 0x67, 0x6e, 0x04, 0x17, 0x4e, 0x5c, 0x38, 0x11,
+ 0x04, 0x91, 0x3f, 0xf5, 0x93, 0x2a, 0xd9, 0xdd, 0x1e, 0x0c, 0x5c, 0x3a, 0x9c, 0xef, 0x7d, 0xef,
+ 0x7b, 0xf9, 0xf3, 0x32, 0xdf, 0xab, 0xaa, 0x54, 0xc3, 0xf2, 0x19, 0x71, 0xe9, 0x89, 0x69, 0xf8,
+ 0x01, 0xa1, 0x24, 0x5c, 0x23, 0x3e, 0xf6, 0x88, 0x4b, 0x57, 0x79, 0x13, 0x15, 0x65, 0x73, 0xe9,
+ 0x6e, 0x97, 0x90, 0xae, 0x8b, 0xd7, 0x4c, 0xdf, 0x59, 0x33, 0x3d, 0x8f, 0x50, 0x93, 0x3a, 0xc4,
+ 0x0b, 0x05, 0x6c, 0x69, 0x45, 0xe5, 0xa0, 0xd8, 0x3a, 0x61, 0x7f, 0x77, 0x1c, 0x17, 0x4b, 0xc4,
+ 0x7d, 0x15, 0x81, 0x2f, 0xa8, 0x61, 0x11, 0xaf, 0xe3, 0x74, 0xaf, 0xd4, 0x63, 0x2f, 0x4c, 0x3c,
+ 0x68, 0xff, 0x98, 0x07, 0x68, 0x7a, 0xb6, 0x63, 0x71, 0xbf, 0x68, 0x1d, 0x8a, 0xc4, 0xa5, 0x86,
+ 0xe3, 0xd9, 0x0b, 0xb9, 0x95, 0xdc, 0xa3, 0x72, 0x7d, 0x6e, 0x35, 0xea, 0x78, 0xcb, 0xa5, 0x09,
+ 0x70, 0xf7, 0x8e, 0x5e, 0x20, 0x5c, 0x80, 0x9e, 0x42, 0xc9, 0xf1, 0x68, 0x87, 0xdb, 0x8c, 0x70,
+ 0x9b, 0xf9, 0xd8, 0xa6, 0xe9, 0xd1, 0x8e, 0x62, 0x54, 0x74, 0x84, 0x04, 0x6d, 0x42, 0x85, 0x5b,
+ 0x11, 0x1f, 0x07, 0xdc, 0x74, 0x94, 0x9b, 0x2e, 0x2b, 0xa6, 0x2d, 0x1f, 0x07, 0x8a, 0x79, 0xd9,
+ 0x49, 0xa4, 0xe8, 0xc7, 0x30, 0x41, 0xbc, 0xbe, 0x61, 0x3b, 0xa1, 0xc5, 0x19, 0xf2, 0x9c, 0x61,
+ 0x29, 0xe9, 0xb0, 0xd7, 0xdf, 0x76, 0x42, 0x4b, 0x21, 0x00, 0x12, 0x0b, 0xf9, 0x58, 0xbd, 0x3e,
+ 0x37, 0x1d, 0x1b, 0x1c, 0xab, 0xd7, 0x1f, 0x18, 0x2b, 0x17, 0xb0, 0xb1, 0x92, 0x9e, 0xe5, 0x70,
+ 0x9b, 0xc2, 0xc0, 0x58, 0x5b, 0x3d, 0xcb, 0x51, 0xc7, 0x4a, 0x84, 0x04, 0x3d, 0x85, 0xa2, 0x7f,
+ 0x2a, 0x26, 0xb5, 0xc8, 0x8d, 0x16, 0x63, 0xa3, 0x43, 0xd3, 0x3a, 0xc5, 0x03, 0xf3, 0xea, 0x9f,
+ 0xf2, 0x79, 0x7d, 0x0e, 0xe0, 0x93, 0x80, 0x1a, 0x21, 0x35, 0x69, 0xb8, 0x50, 0x1a, 0xf0, 0x76,
+ 0x48, 0x02, 0x7a, 0xc4, 0x82, 0x25, 0xa4, 0x8e, 0x15, 0xee, 0xde, 0xd1, 0xc7, 0x7d, 0x29, 0x09,
+ 0x99, 0x65, 0xc7, 0x25, 0xe7, 0xd2, 0x72, 0x7c, 0xc0, 0xf2, 0x95, 0x4b, 0xce, 0x55, 0xcb, 0x8e,
+ 0x94, 0x84, 0xe8, 0x73, 0x18, 0x37, 0x5d, 0x33, 0xe8, 0xf1, 0xbe, 0x02, 0x37, 0x5c, 0x88, 0x0d,
+ 0x37, 0x99, 0x46, 0xe9, 0x6a, 0xc9, 0x94, 0xa2, 0x97, 0x05, 0xc8, 0xdb, 0x26, 0x35, 0xb5, 0x7f,
+ 0xab, 0xc0, 0xe4, 0x00, 0x8e, 0xcd, 0xb3, 0x4b, 0xc2, 0xa1, 0x31, 0xb5, 0x47, 0x42, 0x75, 0xec,
+ 0x2e, 0x17, 0xa0, 0x6d, 0xa8, 0xda, 0x97, 0x8e, 0xd7, 0x35, 0xba, 0x66, 0xe8, 0xa7, 0x22, 0xeb,
+ 0x6e, 0x6c, 0xb9, 0xcd, 0xd4, 0x3b, 0x66, 0xe8, 0x2b, 0xf6, 0x13, 0x76, 0x4a, 0xcc, 0x62, 0x8c,
+ 0x2d, 0x70, 0x32, 0xa2, 0xc1, 0x18, 0x6b, 0x79, 0xfd, 0xec, 0xa0, 0xca, 0x24, 0x91, 0xa2, 0xb7,
+ 0x30, 0xc3, 0x28, 0x42, 0x6a, 0x06, 0xb4, 0xef, 0x1b, 0x1d, 0xd3, 0x71, 0x53, 0xb1, 0xf6, 0x61,
+ 0x9a, 0xe9, 0x48, 0x60, 0x5e, 0x99, 0x8e, 0xdb, 0x0f, 0xb0, 0x42, 0x39, 0x45, 0x14, 0x35, 0x23,
+ 0xfe, 0x19, 0xcc, 0x71, 0x62, 0xa7, 0xeb, 0x99, 0xae, 0x61, 0xe3, 0x6e, 0x60, 0xda, 0x38, 0x15,
+ 0x8b, 0x1f, 0x28, 0xd4, 0x1c, 0xb5, 0x2d, 0x40, 0x0a, 0xf3, 0x34, 0xc9, 0x6a, 0xd1, 0xcf, 0x61,
+ 0x9e, 0x6f, 0x8c, 0xc0, 0xe9, 0x50, 0x83, 0x74, 0x8c, 0x73, 0xc7, 0xb3, 0xc9, 0x79, 0x2a, 0x68,
+ 0x15, 0xf2, 0x6d, 0x06, 0x6b, 0x75, 0xde, 0x72, 0x50, 0x86, 0x7c, 0x50, 0x8b, 0xda, 0xc0, 0x46,
+ 0x63, 0xb8, 0x24, 0x0c, 0x8d, 0x78, 0x2f, 0x88, 0xb0, 0xfe, 0x24, 0x4d, 0xbb, 0x47, 0xc2, 0xb0,
+ 0xd5, 0x61, 0x9b, 0x62, 0xeb, 0xc4, 0xf4, 0x3c, 0xec, 0x2a, 0xd4, 0x55, 0x22, 0x11, 0x72, 0x8b,
+ 0x44, 0xf3, 0xcc, 0x87, 0x12, 0x26, 0xf3, 0x5c, 0x1a, 0x32, 0xcf, 0x02, 0x73, 0xe5, 0x3c, 0x27,
+ 0x6a, 0x46, 0xdc, 0x12, 0x87, 0x04, 0x75, 0xce, 0x45, 0x4f, 0xc5, 0x6e, 0xf8, 0x7e, 0x9a, 0xb0,
+ 0x1d, 0x98, 0x5e, 0xd8, 0x73, 0x42, 0x76, 0x2c, 0x36, 0x3d, 0x8a, 0x83, 0x0e, 0x0e, 0xb0, 0x67,
+ 0xe1, 0xb7, 0x66, 0xe0, 0x39, 0x5e, 0x57, 0x9e, 0x1a, 0x6d, 0xe7, 0x9c, 0xf7, 0xf4, 0xb7, 0xc5,
+ 0xe4, 0x9a, 0x16, 0x75, 0xce, 0xb8, 0xdf, 0xa4, 0xb3, 0x90, 0x9d, 0x85, 0xcd, 0x18, 0x36, 0xac,
+ 0xbf, 0x6c, 0xcc, 0x2a, 0x42, 0x78, 0x58, 0x60, 0x1e, 0xfc, 0x80, 0x58, 0x38, 0x0c, 0xd9, 0x2e,
+ 0xc0, 0x41, 0x40, 0xc4, 0x29, 0x59, 0xe6, 0x2e, 0x3e, 0x4a, 0xbb, 0x38, 0x8c, 0x71, 0x0d, 0x06,
+ 0x53, 0x1c, 0xcc, 0x92, 0x61, 0x7a, 0x84, 0x61, 0x31, 0x59, 0xc3, 0x8e, 0x11, 0x5e, 0x7a, 0x56,
+ 0x32, 0x8a, 0x09, 0xee, 0xe2, 0xd3, 0xec, 0x5a, 0x7e, 0x8d, 0x2f, 0x8f, 0x2e, 0x3d, 0xeb, 0xaa,
+ 0x81, 0x08, 0x50, 0x84, 0x60, 0x6e, 0x5e, 0xc3, 0x2c, 0x3f, 0x60, 0x69, 0xdf, 0xf0, 0x89, 0x27,
+ 0x8e, 0x23, 0xee, 0xa2, 0xc2, 0x5d, 0x3c, 0x54, 0x8e, 0x5b, 0xda, 0x3f, 0x24, 0x1e, 0x3f, 0x85,
+ 0x32, 0x4b, 0xaa, 0xea, 0x90, 0x0b, 0x77, 0x79, 0x78, 0xe3, 0x81, 0x35, 0xe8, 0x07, 0x62, 0x03,
+ 0x55, 0x39, 0xfb, 0xf7, 0x94, 0x18, 0x4f, 0x61, 0x87, 0xf5, 0x9f, 0x4d, 0xc7, 0x70, 0x0c, 0x7a,
+ 0x2b, 0x06, 0x11, 0xe0, 0x1e, 0xa1, 0xd8, 0xb0, 0x71, 0x07, 0x5b, 0xe2, 0x28, 0x9f, 0xe4, 0x6e,
+ 0xb4, 0xb4, 0x1b, 0x9d, 0x83, 0xb6, 0x39, 0x46, 0xe1, 0x47, 0x24, 0xa3, 0x44, 0xa1, 0x18, 0x06,
+ 0x5f, 0x84, 0x2e, 0xee, 0x19, 0x36, 0x76, 0x1d, 0x0f, 0x8b, 0xe1, 0x30, 0xfe, 0x1a, 0xe7, 0x5f,
+ 0xcf, 0xae, 0xc3, 0x4e, 0x63, 0x5f, 0x6e, 0xa9, 0xed, 0xc4, 0x44, 0x71, 0xb7, 0x20, 0x97, 0x63,
+ 0x07, 0xf7, 0x54, 0x08, 0x3a, 0x83, 0x15, 0x1e, 0x5b, 0x27, 0x97, 0xa1, 0x63, 0x99, 0xae, 0x81,
+ 0xbf, 0xed, 0x3b, 0x7e, 0x0f, 0x7b, 0x34, 0x15, 0x63, 0x53, 0xdc, 0xf1, 0x0f, 0x94, 0x18, 0x93,
+ 0xf8, 0x46, 0x04, 0xcf, 0x86, 0x1a, 0x1b, 0xcc, 0x95, 0x30, 0xf4, 0x73, 0x98, 0x4e, 0x47, 0x9c,
+ 0x69, 0x9d, 0x72, 0x57, 0x28, 0xbb, 0x1b, 0xc5, 0x18, 0x37, 0xad, 0x53, 0x8f, 0x9c, 0xbb, 0xd8,
+ 0xee, 0x62, 0xc6, 0xa3, 0x78, 0x9a, 0x24, 0x29, 0x14, 0x23, 0x27, 0xb0, 0x2c, 0x0a, 0x81, 0x4e,
+ 0xc7, 0x08, 0xb0, 0x69, 0x9d, 0x18, 0xf8, 0xc2, 0xc2, 0xd8, 0xc6, 0x36, 0x77, 0x32, 0xcd, 0x9d,
+ 0xac, 0xa9, 0x75, 0x41, 0x87, 0x6f, 0x72, 0xea, 0x98, 0xae, 0xce, 0x2c, 0x1a, 0xd2, 0x40, 0x71,
+ 0x34, 0x4f, 0x04, 0x72, 0x10, 0x11, 0x67, 0xbb, 0x55, 0xa8, 0x28, 0x55, 0x11, 0xba, 0x07, 0xc0,
+ 0x0b, 0x1a, 0x16, 0xea, 0x98, 0x67, 0xbb, 0x71, 0x7d, 0x9c, 0x49, 0x58, 0xf0, 0x62, 0x6d, 0x17,
+ 0xaa, 0x6a, 0x45, 0x84, 0xe6, 0xa1, 0x28, 0x8a, 0x27, 0x91, 0x1b, 0x8b, 0x7a, 0x81, 0x17, 0x48,
+ 0xf6, 0x00, 0xd3, 0xc8, 0x20, 0xd3, 0x09, 0x4c, 0x65, 0xca, 0x9b, 0xab, 0xc9, 0xbe, 0x80, 0x4a,
+ 0x88, 0x03, 0xc7, 0x74, 0x0d, 0xaf, 0xdf, 0x3b, 0xc6, 0x81, 0xcc, 0xa6, 0xb3, 0xf1, 0x94, 0x1c,
+ 0x71, 0xed, 0x01, 0x57, 0xea, 0x13, 0x61, 0xaa, 0xa5, 0xfd, 0x3a, 0x0f, 0x15, 0xa5, 0x1c, 0xba,
+ 0xda, 0xcd, 0x2c, 0x14, 0xf8, 0x7e, 0x17, 0xd9, 0xba, 0xa8, 0x8f, 0xb1, 0xbd, 0x3b, 0x38, 0x94,
+ 0xd1, 0x81, 0xa1, 0xa0, 0x07, 0x50, 0x36, 0xed, 0x9e, 0xe3, 0x49, 0xfd, 0x18, 0xd7, 0x03, 0x17,
+ 0x09, 0x40, 0xa6, 0xf7, 0xf9, 0xf7, 0xee, 0x3d, 0xda, 0x83, 0x32, 0x3f, 0xd8, 0x02, 0x6c, 0x86,
+ 0xc4, 0xe3, 0xe9, 0xaf, 0xaa, 0xc6, 0x5b, 0x32, 0xb0, 0x55, 0xf5, 0x28, 0xd6, 0xb9, 0x89, 0x0e,
+ 0x9d, 0xf8, 0x6f, 0xed, 0xf7, 0x47, 0x60, 0x66, 0x18, 0x08, 0x7d, 0x00, 0x0f, 0x5a, 0x07, 0xaf,
+ 0x8d, 0xcd, 0xad, 0x76, 0xf3, 0xcd, 0x66, 0xbb, 0xd9, 0x3a, 0x30, 0x5e, 0x6d, 0x36, 0xf7, 0x0c,
+ 0xbd, 0xb1, 0x79, 0xd4, 0x3a, 0x30, 0x0e, 0x5a, 0x07, 0x8d, 0xda, 0x1d, 0xf4, 0x31, 0x68, 0xd7,
+ 0x80, 0xf4, 0xcd, 0x83, 0x9d, 0xe6, 0xc1, 0x4e, 0x2d, 0x87, 0x9e, 0x41, 0xfd, 0x1a, 0xdc, 0xe1,
+ 0xe6, 0xd1, 0xd1, 0xdb, 0x96, 0xbe, 0x6d, 0x6c, 0xbe, 0x6e, 0xef, 0x36, 0x0e, 0xda, 0xcd, 0x2d,
+ 0x8e, 0xa9, 0x8d, 0x20, 0x0d, 0xee, 0x5f, 0x63, 0xb7, 0xd7, 0x3a, 0xaa, 0x8d, 0xa2, 0x87, 0x70,
+ 0x6f, 0x18, 0x86, 0xcb, 0xf6, 0x36, 0xf5, 0xfd, 0x5a, 0xfe, 0xaa, 0xb1, 0x1c, 0xbd, 0x6d, 0xb6,
+ 0xb7, 0x76, 0x8d, 0xd6, 0x9b, 0x86, 0x5e, 0x1b, 0xd3, 0x7e, 0x99, 0x07, 0x94, 0xad, 0xd0, 0x11,
+ 0x82, 0x3c, 0xbd, 0xf4, 0xa3, 0xc8, 0xe7, 0x7f, 0xa7, 0xc3, 0x65, 0xe4, 0x9a, 0x10, 0xcf, 0xc4,
+ 0xc5, 0x0c, 0x8c, 0x85, 0x3e, 0xc6, 0xa2, 0xd6, 0x2a, 0xea, 0xa2, 0x81, 0xee, 0x03, 0xb0, 0xa7,
+ 0x20, 0x8f, 0xb8, 0xa4, 0x7b, 0x19, 0x05, 0x4b, 0x22, 0x41, 0x0d, 0x28, 0x04, 0xa6, 0xd7, 0xc5,
+ 0xa1, 0x2c, 0x75, 0x3e, 0xbb, 0xe6, 0x81, 0x62, 0xf5, 0xb0, 0x75, 0xa0, 0xe3, 0x90, 0xf4, 0x03,
+ 0x0b, 0xeb, 0xdc, 0x48, 0x97, 0xc6, 0x4b, 0x7f, 0x31, 0x02, 0x53, 0x19, 0x2d, 0xda, 0x85, 0x31,
+ 0x9f, 0x10, 0x37, 0x5c, 0x18, 0x5d, 0x19, 0x7d, 0x54, 0xae, 0xd7, 0x6f, 0xc4, 0xbd, 0x7a, 0x48,
+ 0x88, 0xab, 0x0b, 0x82, 0xa5, 0xbf, 0xcb, 0x41, 0x9e, 0xb5, 0x51, 0x2b, 0x35, 0x63, 0xd5, 0xfa,
+ 0x0f, 0x6f, 0xce, 0xc8, 0xff, 0x69, 0x5f, 0xfa, 0x58, 0x4e, 0x37, 0x9b, 0x36, 0x56, 0x6a, 0xf2,
+ 0x09, 0x65, 0xd3, 0xc6, 0x1a, 0xa8, 0x06, 0xa3, 0xd8, 0x8b, 0xa6, 0x92, 0xfd, 0xa9, 0x6d, 0x42,
+ 0x29, 0xb2, 0x44, 0x00, 0x05, 0xb6, 0xe4, 0xcd, 0xed, 0xda, 0x1d, 0x34, 0x01, 0xa5, 0xcd, 0xbd,
+ 0xbd, 0xd6, 0x16, 0x6b, 0xe5, 0x50, 0x15, 0x60, 0xa7, 0xb1, 0x7f, 0xd8, 0xd2, 0xdb, 0xac, 0x3d,
+ 0x82, 0xca, 0x50, 0x7c, 0xb5, 0xd7, 0x7a, 0xcb, 0x1a, 0xa3, 0x9a, 0x0e, 0x55, 0xf5, 0xa1, 0xe7,
+ 0xc6, 0x47, 0x43, 0x0d, 0x46, 0xfd, 0x53, 0xd1, 0xd5, 0x09, 0x9d, 0xfd, 0xa9, 0xfd, 0x7b, 0x0e,
+ 0x6a, 0x83, 0x0f, 0x45, 0x68, 0x19, 0xc6, 0x39, 0x2d, 0x9f, 0x29, 0xb1, 0xe6, 0xfc, 0x99, 0xb3,
+ 0x3d, 0x10, 0x5f, 0x57, 0xf9, 0x2c, 0xa5, 0x7d, 0xce, 0x42, 0xa1, 0xef, 0x39, 0x4c, 0x3c, 0x2e,
+ 0xc4, 0x7d, 0xcf, 0x11, 0xd1, 0xd8, 0xc5, 0x3d, 0xfe, 0xc4, 0x15, 0xf7, 0x72, 0x5c, 0x4a, 0x9a,
+ 0x36, 0xf3, 0xc2, 0x9f, 0xa9, 0x1c, 0x5b, 0x4e, 0x6c, 0x81, 0x35, 0x85, 0x82, 0x1b, 0x79, 0x84,
+ 0x47, 0x5c, 0x51, 0x2f, 0xb0, 0xe6, 0x01, 0x41, 0x73, 0x50, 0xb0, 0x08, 0x39, 0x75, 0x30, 0xaf,
+ 0x8e, 0x0b, 0xba, 0x6c, 0x45, 0x63, 0xce, 0x27, 0x63, 0xfe, 0x10, 0xc6, 0x45, 0xdd, 0x69, 0x5a,
+ 0x57, 0x0f, 0x47, 0xfb, 0x11, 0x8c, 0xef, 0x62, 0x33, 0xa0, 0xc7, 0xd8, 0xa4, 0x68, 0x0d, 0xa6,
+ 0x4f, 0xa2, 0x86, 0xa8, 0x9a, 0x69, 0x3f, 0xc0, 0xd2, 0x02, 0xc5, 0xaa, 0xa3, 0x48, 0xa3, 0xfd,
+ 0x55, 0x0e, 0x46, 0x5b, 0x5e, 0xff, 0xc6, 0x2b, 0x94, 0x39, 0x7c, 0x47, 0xdf, 0xff, 0xf0, 0x65,
+ 0x23, 0x75, 0x82, 0x28, 0xe8, 0x7c, 0x27, 0x40, 0x9f, 0xc0, 0x24, 0xe9, 0x59, 0x96, 0x81, 0x3d,
+ 0x2b, 0xb8, 0xf4, 0xd9, 0xda, 0xf2, 0xe5, 0x2c, 0xe9, 0x55, 0x26, 0x6e, 0xc4, 0x52, 0xed, 0xaf,
+ 0x73, 0x80, 0x78, 0x31, 0xd0, 0x65, 0xf5, 0xc4, 0xb6, 0x13, 0x52, 0xd3, 0xb3, 0xf0, 0x8d, 0x7b,
+ 0xff, 0x02, 0x16, 0x5d, 0x41, 0x61, 0xc8, 0x57, 0x05, 0x9c, 0xc7, 0xf8, 0x1d, 0x1c, 0x10, 0xb9,
+ 0x8e, 0x73, 0x12, 0x20, 0xd2, 0x29, 0x57, 0xff, 0x0c, 0x07, 0x04, 0x3d, 0x86, 0x99, 0x61, 0xa6,
+ 0x72, 0x34, 0x28, 0x6b, 0xa5, 0x7d, 0x0d, 0x45, 0xb6, 0x1d, 0xf6, 0xc3, 0xee, 0x2d, 0xec, 0x83,
+ 0x5f, 0xe5, 0x60, 0x9c, 0x15, 0x5e, 0x7c, 0x2b, 0xdc, 0x98, 0x2f, 0x15, 0x94, 0x79, 0x25, 0x28,
+ 0xd5, 0x28, 0x1f, 0x1b, 0x8c, 0xf2, 0x6c, 0x3f, 0x5e, 0xc0, 0xc4, 0x6b, 0xdf, 0x75, 0xbc, 0xd3,
+ 0x77, 0xf5, 0x44, 0x9a, 0x8e, 0x24, 0xa6, 0x7f, 0x5a, 0x04, 0xd8, 0xc6, 0x67, 0x8e, 0x85, 0x9b,
+ 0x5e, 0x87, 0xef, 0x87, 0x33, 0xec, 0xd9, 0x24, 0x90, 0xd9, 0x41, 0xb6, 0xd8, 0x81, 0xd5, 0x23,
+ 0x36, 0x76, 0x65, 0x91, 0x23, 0x1a, 0xe8, 0x7b, 0x50, 0x3b, 0x31, 0x03, 0xfb, 0xdc, 0x0c, 0xb0,
+ 0x71, 0x86, 0x03, 0xf6, 0x6c, 0x26, 0x53, 0xc4, 0x64, 0x24, 0x7f, 0x23, 0xc4, 0x0c, 0xda, 0x71,
+ 0x82, 0x9e, 0x02, 0xcd, 0x0b, 0x68, 0x24, 0x8f, 0xa0, 0xcb, 0x30, 0x6e, 0xf3, 0x1e, 0xb1, 0xfe,
+ 0xd7, 0xc4, 0x41, 0x22, 0x04, 0x4d, 0x9b, 0xad, 0xb8, 0x54, 0xaa, 0x11, 0x3f, 0xc5, 0x71, 0x48,
+ 0xe8, 0xd2, 0xe1, 0x8e, 0xd6, 0x61, 0xc6, 0x0f, 0xf0, 0x99, 0x43, 0xfa, 0xa1, 0x7b, 0x69, 0x58,
+ 0xc4, 0xf3, 0xb0, 0x45, 0xb1, 0xa8, 0x38, 0x4b, 0xfa, 0x74, 0xa2, 0xdb, 0x8a, 0x54, 0xac, 0x07,
+ 0xec, 0x59, 0x88, 0xcd, 0x77, 0xc8, 0x1f, 0xb5, 0x8a, 0x7a, 0xc9, 0x27, 0xde, 0x21, 0x6b, 0xa3,
+ 0x2f, 0xe3, 0xe4, 0x35, 0xc9, 0x13, 0xcc, 0xa3, 0xe4, 0x75, 0x47, 0x3c, 0x8f, 0xf2, 0xcf, 0x2b,
+ 0xf2, 0xd6, 0x1f, 0xe6, 0x61, 0x66, 0x18, 0x00, 0x2d, 0x46, 0x6f, 0xe9, 0xec, 0x70, 0x21, 0xb7,
+ 0x32, 0xfa, 0xa8, 0x28, 0x5f, 0xc5, 0xd9, 0xe1, 0x40, 0x4a, 0x1d, 0xc9, 0xa4, 0xd4, 0x2d, 0x35,
+ 0xeb, 0x7d, 0xf6, 0xbe, 0x9d, 0x52, 0x12, 0xde, 0x7f, 0x8e, 0xc8, 0x84, 0xf7, 0x95, 0x92, 0xf0,
+ 0x9e, 0xdd, 0x88, 0x6c, 0x30, 0xd7, 0x1d, 0x41, 0x31, 0x3c, 0x31, 0x03, 0xc7, 0xeb, 0xf2, 0x6e,
+ 0x57, 0xeb, 0x2f, 0x6e, 0x46, 0x77, 0x24, 0x8c, 0x39, 0x63, 0xc4, 0xf4, 0x7f, 0x99, 0x40, 0x4f,
+ 0xa0, 0x9c, 0xea, 0x02, 0x9a, 0x03, 0xb4, 0xdd, 0xd8, 0x66, 0x05, 0x5d, 0x63, 0xdb, 0x38, 0x6c,
+ 0xe8, 0x46, 0xf3, 0xa0, 0xfd, 0xaa, 0x76, 0x07, 0x3d, 0x80, 0xe5, 0xa3, 0xdd, 0x4d, 0xbd, 0xb1,
+ 0x6d, 0xbc, 0xfc, 0xa9, 0xb1, 0xb9, 0xb7, 0xc7, 0xe5, 0xfc, 0x8f, 0x76, 0x63, 0x6b, 0xb7, 0x96,
+ 0x43, 0x2b, 0x70, 0x77, 0x08, 0xe0, 0x68, 0x73, 0xbf, 0x21, 0x10, 0x23, 0x5f, 0xe5, 0x4b, 0x63,
+ 0xb5, 0x89, 0xaf, 0xf2, 0xa5, 0x4a, 0xad, 0xfa, 0x55, 0xbe, 0x54, 0xad, 0x4d, 0x6a, 0xbf, 0x3b,
+ 0x0a, 0xb0, 0xe5, 0x9a, 0x61, 0xe8, 0x74, 0x1c, 0x1c, 0xf0, 0x83, 0xc4, 0xa0, 0x7e, 0xbc, 0xad,
+ 0xc7, 0x48, 0xdb, 0x77, 0x6c, 0x34, 0x0d, 0x63, 0xc4, 0x38, 0x8b, 0x8f, 0x97, 0x3c, 0x79, 0xe3,
+ 0xf0, 0x43, 0xc7, 0x11, 0x58, 0x39, 0x45, 0x4e, 0x84, 0x75, 0x38, 0x56, 0x4c, 0x52, 0xde, 0x61,
+ 0xd8, 0x79, 0x28, 0x12, 0xc3, 0x3f, 0x76, 0x68, 0x28, 0x4f, 0x9b, 0x02, 0x39, 0x64, 0x2d, 0x7e,
+ 0x90, 0x48, 0x85, 0xcc, 0x9b, 0x8e, 0x50, 0x2c, 0x42, 0x09, 0xd3, 0x13, 0x91, 0xeb, 0x8b, 0x5c,
+ 0x53, 0xc4, 0xf4, 0x24, 0x4a, 0xf5, 0x76, 0x48, 0x8d, 0x9e, 0x69, 0xf1, 0x94, 0x3e, 0xa1, 0x17,
+ 0xec, 0x90, 0xee, 0x9b, 0x16, 0x53, 0x84, 0x81, 0xc5, 0x15, 0xe3, 0x42, 0x11, 0x06, 0x16, 0x53,
+ 0xb0, 0xb0, 0xf7, 0xc5, 0xcb, 0x6f, 0xfe, 0x7a, 0x86, 0x85, 0xbd, 0x7f, 0xc8, 0x5f, 0xc1, 0xcf,
+ 0x02, 0xb3, 0x36, 0x1c, 0x9f, 0xbf, 0x54, 0x29, 0xea, 0x63, 0x76, 0x48, 0x9b, 0x3e, 0x13, 0x33,
+ 0x2a, 0xc7, 0x97, 0xbb, 0x73, 0x2c, 0x0c, 0xac, 0xa6, 0xcf, 0x88, 0x98, 0x98, 0xed, 0x5b, 0xfe,
+ 0xfa, 0xa2, 0xa8, 0x33, 0x8f, 0x6c, 0xdb, 0x32, 0x15, 0x23, 0xe2, 0xaa, 0xaa, 0x50, 0xd9, 0x21,
+ 0xe5, 0xaa, 0x15, 0x98, 0xf0, 0x4f, 0xa9, 0x41, 0xcd, 0xae, 0x18, 0xcf, 0xa4, 0xd8, 0x5c, 0xfe,
+ 0x29, 0x6d, 0x9b, 0x7c, 0xcd, 0xb5, 0x5f, 0x8d, 0xc2, 0x38, 0x7b, 0xa4, 0x20, 0xde, 0x56, 0xcf,
+ 0x46, 0x1a, 0x54, 0x4c, 0xdb, 0x36, 0x48, 0x9f, 0xe2, 0x80, 0x59, 0xf1, 0xc5, 0x28, 0xe9, 0x65,
+ 0xd3, 0xb6, 0x5b, 0x4c, 0xd6, 0x36, 0xbb, 0xe8, 0x11, 0xd4, 0x02, 0xdc, 0x23, 0x67, 0x38, 0x05,
+ 0x1b, 0x11, 0x49, 0x54, 0xc8, 0x63, 0xe4, 0x0a, 0x4c, 0xd0, 0xc0, 0xf4, 0x0d, 0x4a, 0x8c, 0x13,
+ 0x12, 0x8a, 0x80, 0x2e, 0xe9, 0xc0, 0x64, 0x6d, 0xb2, 0x4b, 0x42, 0x8a, 0x7e, 0x00, 0x28, 0xc0,
+ 0x3d, 0x33, 0x38, 0x95, 0x5c, 0x62, 0x3d, 0xf2, 0x1c, 0x57, 0x13, 0x1a, 0xce, 0x26, 0x56, 0x26,
+ 0x41, 0x3b, 0x9e, 0x17, 0xa3, 0xc7, 0xd2, 0xe8, 0x26, 0x53, 0x08, 0xb4, 0x1c, 0x8b, 0x80, 0xb2,
+ 0x4e, 0x16, 0xe2, 0xb1, 0x70, 0x94, 0x3a, 0x96, 0x04, 0x56, 0x4c, 0x8f, 0x25, 0x46, 0xae, 0xc2,
+ 0x34, 0x0d, 0x4c, 0x2f, 0x74, 0x4d, 0x9a, 0x06, 0x97, 0x38, 0x78, 0x2a, 0x56, 0x0d, 0xc7, 0x27,
+ 0x13, 0x35, 0x3e, 0x80, 0x8f, 0xe6, 0x4a, 0xfb, 0x9b, 0x1c, 0x14, 0xc4, 0x3a, 0xa0, 0x0f, 0x61,
+ 0xd4, 0xea, 0x45, 0xef, 0xaa, 0x51, 0xf2, 0xfa, 0x3b, 0x5a, 0x25, 0x9d, 0xa9, 0x87, 0xef, 0x8c,
+ 0x54, 0xb4, 0x8f, 0x2a, 0xd1, 0x9e, 0x6c, 0xaf, 0xfc, 0xc0, 0xf6, 0x12, 0x5b, 0x66, 0x4c, 0xdd,
+ 0x32, 0xc3, 0x77, 0x46, 0xb2, 0xef, 0x8a, 0xa9, 0x7d, 0xa7, 0xfd, 0x43, 0x01, 0xf2, 0xaf, 0x5c,
+ 0x72, 0x8e, 0x3e, 0x84, 0xaa, 0x69, 0x59, 0x38, 0x0c, 0x8d, 0x74, 0x8a, 0x9e, 0xd4, 0x27, 0x84,
+ 0xb4, 0x39, 0xac, 0x64, 0x98, 0xcc, 0x96, 0xc5, 0x65, 0x21, 0x16, 0x65, 0xf1, 0x40, 0xdd, 0x5b,
+ 0x88, 0xeb, 0xde, 0x4f, 0x61, 0x2a, 0xbc, 0xec, 0xf5, 0x30, 0x0d, 0x1c, 0xcb, 0x88, 0x20, 0x88,
+ 0x43, 0x26, 0x63, 0xc5, 0x2b, 0x81, 0x5d, 0x06, 0xfe, 0x8d, 0x41, 0xec, 0x01, 0x91, 0x9a, 0x4b,
+ 0x4c, 0xc0, 0x37, 0xf5, 0x22, 0x94, 0x4c, 0xd7, 0x25, 0x16, 0xb3, 0x07, 0xee, 0xba, 0xc8, 0xdb,
+ 0x4d, 0x1b, 0x7d, 0x0c, 0x93, 0x1e, 0xa6, 0xe7, 0x84, 0x47, 0x9c, 0x18, 0xd1, 0x18, 0x47, 0x54,
+ 0xa4, 0xb8, 0x19, 0x3f, 0x49, 0xa6, 0xaa, 0x9a, 0x02, 0x87, 0xa4, 0xaa, 0x9a, 0x27, 0x00, 0x56,
+ 0x7c, 0xd2, 0xc9, 0x77, 0xd5, 0xd3, 0xf1, 0xba, 0x26, 0x87, 0xa0, 0x9e, 0x82, 0xa1, 0x4f, 0xa0,
+ 0x60, 0xf2, 0x15, 0x97, 0xef, 0xa0, 0x27, 0x07, 0x02, 0x41, 0x97, 0x6a, 0xb4, 0x04, 0x25, 0x3f,
+ 0x70, 0x48, 0xe0, 0xd0, 0x4b, 0x1e, 0x5e, 0x93, 0x7a, 0xdc, 0x4e, 0x3d, 0x03, 0x4c, 0x28, 0xcf,
+ 0x00, 0xa9, 0xfa, 0xac, 0xa2, 0xd4, 0x67, 0x8b, 0x50, 0xea, 0x06, 0xa4, 0xef, 0xb3, 0x71, 0xc8,
+ 0xb3, 0x84, 0xb7, 0xc5, 0x64, 0xa4, 0xbf, 0xff, 0x31, 0xc4, 0x24, 0x47, 0x54, 0x98, 0xf8, 0x50,
+ 0x48, 0x9b, 0x36, 0xfa, 0x08, 0xaa, 0x01, 0xf6, 0x5d, 0xf6, 0xec, 0x84, 0xf9, 0xc2, 0xf0, 0x42,
+ 0xa7, 0xa4, 0x57, 0x62, 0x29, 0x0f, 0x96, 0x5d, 0x98, 0x64, 0x31, 0xc6, 0x0e, 0x07, 0x39, 0x53,
+ 0x0b, 0x53, 0x3c, 0xbf, 0xaf, 0x28, 0x5f, 0x8a, 0x56, 0x59, 0xe8, 0xb5, 0xc9, 0x8e, 0x80, 0x34,
+ 0x3c, 0x1a, 0x5c, 0xea, 0x15, 0x3f, 0x2d, 0x43, 0x0d, 0xa8, 0x46, 0xb3, 0x4f, 0x89, 0x61, 0xe2,
+ 0x70, 0x61, 0x9a, 0x13, 0x3d, 0x50, 0x89, 0x24, 0xbc, 0x4d, 0x36, 0x71, 0x28, 0x78, 0x26, 0xba,
+ 0x29, 0xd1, 0xd2, 0x97, 0x80, 0xb2, 0xbe, 0x58, 0xde, 0x3d, 0xc5, 0x97, 0x32, 0x29, 0xb1, 0x3f,
+ 0x59, 0x7e, 0x3e, 0x33, 0xdd, 0x3e, 0x8e, 0x2a, 0x5e, 0xde, 0xf8, 0x62, 0xe4, 0x79, 0x6e, 0xe9,
+ 0x27, 0x30, 0x95, 0x71, 0xf2, 0x2e, 0x82, 0x52, 0x8a, 0x40, 0x6b, 0xc3, 0x84, 0x52, 0xdf, 0x2d,
+ 0xc3, 0xb8, 0x28, 0x52, 0xa3, 0xbd, 0x34, 0xa1, 0x97, 0x84, 0xa0, 0x69, 0xb3, 0x67, 0x19, 0xa9,
+ 0x0c, 0x7d, 0x6c, 0x39, 0x1d, 0xc7, 0x92, 0xc5, 0x6f, 0x55, 0x88, 0x8f, 0xa4, 0x54, 0xfb, 0xaf,
+ 0x32, 0x54, 0xd5, 0xcf, 0x75, 0x57, 0x57, 0xd1, 0x8b, 0x50, 0x0a, 0x2e, 0x8c, 0xe3, 0x4b, 0x8a,
+ 0x43, 0xce, 0x56, 0xd0, 0x8b, 0xc1, 0xc5, 0x4b, 0xd6, 0x64, 0x41, 0x1e, 0x5c, 0x18, 0x3e, 0x2f,
+ 0xc3, 0x43, 0xb9, 0x19, 0xc7, 0x83, 0x0b, 0x51, 0x97, 0x87, 0xfc, 0x28, 0xbd, 0x30, 0xfa, 0x96,
+ 0xc9, 0x52, 0x91, 0x04, 0xe5, 0x39, 0xa8, 0x1a, 0x5c, 0xbc, 0x66, 0x62, 0x15, 0xd9, 0x53, 0x90,
+ 0x63, 0x11, 0x72, 0x3f, 0x8b, 0x3c, 0x56, 0x90, 0x85, 0x08, 0xf9, 0x32, 0x8b, 0x14, 0xef, 0x90,
+ 0x23, 0x64, 0x31, 0x42, 0xf2, 0xb7, 0xc0, 0x11, 0x72, 0x19, 0xc6, 0x83, 0x0b, 0xa3, 0x13, 0x98,
+ 0x3d, 0x1c, 0xf2, 0xd2, 0xba, 0xa0, 0x97, 0x82, 0x8b, 0x57, 0xbc, 0xcd, 0x32, 0x56, 0xac, 0x34,
+ 0x9e, 0x3d, 0x95, 0xe7, 0x09, 0x44, 0xfa, 0x67, 0x4f, 0xd1, 0x27, 0xdc, 0x51, 0x84, 0xd8, 0x30,
+ 0xd6, 0xeb, 0x9f, 0xf3, 0x72, 0xbb, 0xa0, 0x57, 0x62, 0xd4, 0xc6, 0x7a, 0xfd, 0x73, 0xf4, 0x3d,
+ 0x98, 0x4a, 0x80, 0xeb, 0xf5, 0xe7, 0x46, 0x7d, 0x63, 0x63, 0x61, 0x26, 0xea, 0x92, 0x40, 0xae,
+ 0xd7, 0x9f, 0xd7, 0x37, 0x36, 0x54, 0x68, 0x7d, 0xe3, 0x99, 0xb1, 0xb1, 0xbe, 0xbe, 0x30, 0xab,
+ 0x42, 0xeb, 0x1b, 0xcf, 0x36, 0xd6, 0xd7, 0xd1, 0xf7, 0x01, 0x25, 0xd0, 0x8d, 0xf5, 0xba, 0xb1,
+ 0xfe, 0xb8, 0xfe, 0x64, 0x61, 0x4e, 0x1c, 0x7b, 0x11, 0x76, 0x63, 0xbd, 0xce, 0xc4, 0xe8, 0x33,
+ 0x98, 0x4e, 0x75, 0xe1, 0x71, 0xfd, 0xa9, 0xb1, 0xbe, 0xb1, 0xfe, 0x7c, 0x61, 0x9e, 0xa3, 0x6b,
+ 0x71, 0x27, 0x1e, 0xd7, 0x9f, 0x32, 0xf9, 0x00, 0x7c, 0x63, 0xfd, 0x85, 0x51, 0x7f, 0xfc, 0xf4,
+ 0xf3, 0x85, 0x85, 0x01, 0xf8, 0xc6, 0xfa, 0x0b, 0x26, 0x57, 0xe1, 0xf5, 0xc7, 0x4f, 0x9f, 0x1b,
+ 0x4f, 0x1f, 0xbf, 0xd8, 0x58, 0x58, 0x54, 0xe1, 0x4c, 0xc1, 0xe4, 0x2a, 0xfc, 0xe9, 0xe3, 0x17,
+ 0xcf, 0x8c, 0x17, 0xf5, 0xf5, 0x67, 0x0b, 0x4b, 0x2a, 0x9c, 0x29, 0x98, 0x1c, 0xad, 0xc1, 0x4c,
+ 0x02, 0x7f, 0x51, 0x5f, 0xff, 0xdc, 0x58, 0x7f, 0xf6, 0xe4, 0xf9, 0x93, 0x85, 0x65, 0x8e, 0x9f,
+ 0x8a, 0xf0, 0x4c, 0xc3, 0x15, 0x2c, 0xdd, 0x07, 0x17, 0x86, 0x15, 0x58, 0x22, 0x0a, 0x42, 0x7e,
+ 0x7c, 0x15, 0xf4, 0x72, 0x70, 0xb1, 0x15, 0x58, 0x3c, 0x02, 0x78, 0x69, 0x47, 0xa3, 0xe8, 0x2e,
+ 0x89, 0xe8, 0xa6, 0x49, 0x74, 0xd3, 0x24, 0xba, 0xc7, 0x45, 0x74, 0xd3, 0x74, 0x74, 0xd3, 0xc1,
+ 0xe8, 0x06, 0xb1, 0x42, 0x34, 0x13, 0xdd, 0x74, 0x30, 0xba, 0xcb, 0x11, 0x72, 0x3f, 0x8b, 0x54,
+ 0xa3, 0x7b, 0x22, 0x42, 0xbe, 0xcc, 0x22, 0xd5, 0xe8, 0xae, 0x44, 0xc8, 0xc1, 0xe8, 0xa6, 0x71,
+ 0x74, 0xdf, 0x15, 0xd1, 0x4d, 0x53, 0xd1, 0x4d, 0xd3, 0xd1, 0x7d, 0x4f, 0x44, 0x37, 0x55, 0xa2,
+ 0x9b, 0x0e, 0x46, 0xf7, 0x7d, 0x11, 0xdd, 0x74, 0x30, 0xba, 0x69, 0x26, 0xba, 0x1f, 0x44, 0x5d,
+ 0x1a, 0x8c, 0x6e, 0x9a, 0x89, 0xee, 0x15, 0x15, 0x9a, 0x44, 0x37, 0xcd, 0x46, 0xf7, 0x43, 0x11,
+ 0xdd, 0x34, 0x1b, 0xdd, 0x74, 0x48, 0x74, 0x6b, 0x22, 0xa0, 0xe8, 0x90, 0xe8, 0xa6, 0x43, 0xa2,
+ 0xfb, 0x83, 0x01, 0x78, 0x2a, 0xba, 0xe9, 0x90, 0xe8, 0xfe, 0x50, 0x85, 0xa7, 0xa3, 0x9b, 0x0e,
+ 0x89, 0xee, 0x8f, 0x54, 0x78, 0x3a, 0xba, 0xe9, 0xb0, 0xe8, 0xfe, 0x58, 0x44, 0x37, 0xcd, 0x44,
+ 0xf7, 0x3d, 0x80, 0x63, 0xc7, 0x8f, 0x42, 0x7b, 0x52, 0x84, 0xe7, 0xb1, 0xe3, 0xcb, 0xc0, 0xbe,
+ 0x0b, 0xe3, 0xd4, 0xe9, 0xe1, 0x90, 0x9a, 0x3d, 0x9f, 0xa7, 0xdb, 0xa2, 0x9e, 0x08, 0xb4, 0x7f,
+ 0x2d, 0xf2, 0x4f, 0x28, 0xef, 0x73, 0xfe, 0x5f, 0xf1, 0x3e, 0xe7, 0x23, 0xa8, 0xfa, 0x24, 0x74,
+ 0xa8, 0x73, 0x86, 0xc5, 0x67, 0x7d, 0x79, 0xfe, 0x57, 0x22, 0x29, 0xff, 0x4c, 0xcf, 0x60, 0x1e,
+ 0xee, 0x9a, 0x29, 0x98, 0xc8, 0x00, 0x95, 0x48, 0x2a, 0x60, 0xcf, 0x61, 0xc1, 0xc6, 0xae, 0xd3,
+ 0x73, 0x58, 0x55, 0xdc, 0x73, 0xc2, 0xd0, 0xb0, 0x31, 0xc5, 0x56, 0xfc, 0x3a, 0xae, 0xa0, 0xcf,
+ 0xc5, 0xfa, 0x7d, 0x27, 0x0c, 0xb7, 0x23, 0xed, 0xc0, 0x34, 0x14, 0x06, 0xa7, 0x61, 0x19, 0x58,
+ 0xc3, 0xe8, 0x7b, 0x4e, 0x7c, 0xfc, 0x97, 0x8e, 0x1d, 0xff, 0x35, 0x6b, 0xa3, 0x3a, 0xcc, 0x76,
+ 0xb0, 0x65, 0x58, 0x24, 0x08, 0xf8, 0xab, 0x10, 0x23, 0xbc, 0xec, 0x1d, 0x13, 0x37, 0x3a, 0x09,
+ 0xa6, 0x3b, 0xd8, 0xda, 0x8a, 0x74, 0x47, 0x42, 0x85, 0x9e, 0xc1, 0xbc, 0xb0, 0xb1, 0xf1, 0x39,
+ 0x09, 0xec, 0x30, 0xb1, 0x96, 0x47, 0xc4, 0x2c, 0xb7, 0x92, 0xda, 0xd8, 0x1c, 0xfd, 0x18, 0x96,
+ 0x55, 0xbb, 0xbe, 0x27, 0x2d, 0xcd, 0x63, 0x17, 0xcb, 0x93, 0x63, 0x31, 0x6d, 0xfb, 0x3a, 0x0d,
+ 0x40, 0x1f, 0x40, 0x45, 0xb1, 0x97, 0x27, 0xc8, 0x44, 0xda, 0x82, 0x3d, 0x62, 0xa8, 0x03, 0x12,
+ 0xe3, 0x16, 0x47, 0xc8, 0x54, 0x7a, 0x38, 0x62, 0x02, 0x3e, 0x86, 0xc9, 0x8b, 0x2e, 0xee, 0x19,
+ 0xa7, 0xf8, 0x32, 0x9a, 0x41, 0x71, 0x88, 0x54, 0x98, 0xf8, 0x6b, 0x7c, 0x99, 0xcc, 0x22, 0xc7,
+ 0xb9, 0x24, 0x8c, 0x4e, 0xd1, 0x12, 0x13, 0xec, 0x91, 0x90, 0x93, 0xb0, 0x2a, 0xc0, 0x25, 0x66,
+ 0x2f, 0x14, 0x2c, 0x32, 0x1a, 0x2b, 0xc1, 0xc5, 0x21, 0x97, 0x72, 0x16, 0x99, 0xa8, 0x24, 0xce,
+ 0x23, 0x9e, 0xe1, 0xd8, 0x2e, 0xe6, 0xa1, 0xc9, 0x13, 0x95, 0x80, 0x1e, 0x10, 0xaf, 0x69, 0xbb,
+ 0xbc, 0x1c, 0x0d, 0x2e, 0xf8, 0x6d, 0x0e, 0x99, 0x91, 0x0b, 0xc1, 0x45, 0xab, 0x67, 0x39, 0xe8,
+ 0x39, 0x2c, 0x4a, 0x45, 0x74, 0xee, 0x25, 0x27, 0xbc, 0x4c, 0xce, 0xb3, 0x02, 0x2a, 0x0f, 0xc0,
+ 0xe8, 0xac, 0x57, 0x0a, 0x99, 0xe9, 0xeb, 0x0a, 0x99, 0x99, 0xc1, 0x42, 0x26, 0x9d, 0x24, 0x66,
+ 0xaf, 0x4b, 0x12, 0x73, 0x83, 0x49, 0xe2, 0x21, 0x4c, 0x1c, 0xe3, 0xc0, 0x08, 0x30, 0x2b, 0x01,
+ 0xb1, 0x2d, 0x13, 0x6d, 0xf9, 0x18, 0x07, 0xba, 0x14, 0xa1, 0x07, 0x50, 0x76, 0x2d, 0xbb, 0x1b,
+ 0xcd, 0xbf, 0xc8, 0xad, 0xc0, 0x44, 0x72, 0xf2, 0x59, 0xe7, 0x6c, 0x27, 0xd2, 0x2f, 0xca, 0xce,
+ 0xd9, 0xce, 0xb0, 0x8d, 0xbe, 0x34, 0xb8, 0xd1, 0xff, 0x39, 0xc7, 0x2b, 0xd0, 0xf7, 0x2d, 0xf6,
+ 0xde, 0xf1, 0xc9, 0xe1, 0x1d, 0x05, 0x5f, 0x7a, 0x86, 0xf3, 0x99, 0x19, 0x4e, 0xcd, 0xd3, 0xd8,
+ 0xe0, 0x3c, 0xa5, 0x67, 0xb8, 0xa0, 0xce, 0xf0, 0xf5, 0xe3, 0xfb, 0xdb, 0x1c, 0x54, 0xd5, 0xeb,
+ 0x63, 0xe9, 0xe7, 0xc3, 0x9c, 0xf2, 0x5d, 0xe4, 0xbb, 0x57, 0xb2, 0xdf, 0xbd, 0x4a, 0xb8, 0xfe,
+ 0x18, 0xfe, 0x12, 0x2a, 0xca, 0x7d, 0xb3, 0xab, 0x17, 0x66, 0x0e, 0x0a, 0x21, 0x35, 0x69, 0x3f,
+ 0x94, 0x6f, 0x43, 0x65, 0x4b, 0xfb, 0x06, 0xa6, 0x87, 0xdc, 0x3b, 0xbb, 0xf1, 0x69, 0x9e, 0xd0,
+ 0x8f, 0x2a, 0xf4, 0x7f, 0x39, 0xc2, 0x3f, 0x7a, 0x0c, 0xde, 0x9f, 0xfb, 0x0e, 0xdf, 0xdb, 0x5d,
+ 0x12, 0x1a, 0x8a, 0x8b, 0x71, 0x97, 0x84, 0x47, 0x5c, 0x20, 0xd4, 0xc7, 0x91, 0x3a, 0x1f, 0xa9,
+ 0x8f, 0xa5, 0xfa, 0x11, 0xd4, 0x5c, 0xe2, 0x5b, 0x22, 0x2f, 0x48, 0x90, 0xf8, 0xe4, 0x56, 0x65,
+ 0x72, 0x96, 0x0f, 0x24, 0x72, 0x1d, 0x66, 0x25, 0x52, 0x9e, 0x08, 0x11, 0xbc, 0x20, 0x5e, 0x98,
+ 0x0b, 0xb8, 0x38, 0x0f, 0xa4, 0x09, 0xdb, 0x7e, 0xa4, 0xe3, 0x44, 0xc0, 0xa2, 0x78, 0x1d, 0xc6,
+ 0x44, 0x12, 0xf0, 0x10, 0x26, 0xd8, 0xc9, 0x14, 0x23, 0x4a, 0x1c, 0x51, 0xe6, 0x32, 0x01, 0xd1,
+ 0x30, 0x2c, 0x5f, 0x73, 0xdb, 0xee, 0xd6, 0x16, 0xe3, 0x8f, 0x73, 0xb0, 0x74, 0xf5, 0xd5, 0xbb,
+ 0xdb, 0x72, 0x83, 0x9e, 0xc0, 0x9c, 0xe3, 0x9d, 0xe1, 0x20, 0xc4, 0x06, 0x7b, 0x1a, 0x17, 0xf3,
+ 0x18, 0x98, 0x34, 0xfa, 0xd0, 0x34, 0x2d, 0xb5, 0x2f, 0x1d, 0x71, 0x99, 0x46, 0x37, 0x29, 0xd6,
+ 0x7e, 0x2d, 0xfa, 0x76, 0xc5, 0xcd, 0xbd, 0x5b, 0xeb, 0xdb, 0x0c, 0x8c, 0x25, 0x55, 0x44, 0x51,
+ 0x17, 0x0d, 0xc6, 0xee, 0xe1, 0x73, 0x03, 0x7f, 0x1b, 0xbd, 0xb5, 0x2a, 0x78, 0xf8, 0xbc, 0xf1,
+ 0xad, 0xad, 0x9d, 0xc0, 0xfd, 0xeb, 0xef, 0xfd, 0xdd, 0xda, 0xda, 0xfc, 0x49, 0x4e, 0xc4, 0xc0,
+ 0x15, 0x37, 0x01, 0xff, 0x7f, 0x17, 0xe7, 0x97, 0x39, 0xd0, 0xde, 0x7d, 0xab, 0xf0, 0x7f, 0x77,
+ 0x91, 0xb4, 0x6f, 0xf9, 0x5a, 0x5c, 0x73, 0xfb, 0xf0, 0xc6, 0xfe, 0x1f, 0xa8, 0x37, 0x69, 0xc4,
+ 0xeb, 0xcd, 0xf4, 0xe5, 0x98, 0x53, 0x78, 0xf8, 0xce, 0xab, 0x82, 0xb7, 0x16, 0x01, 0x6d, 0x40,
+ 0xba, 0x4c, 0xca, 0x29, 0x76, 0x56, 0x1c, 0x45, 0xc9, 0xdb, 0xb0, 0x48, 0xdf, 0xa3, 0xdc, 0x0b,
+ 0x2b, 0x8e, 0x24, 0x78, 0x8b, 0x09, 0xaf, 0x3c, 0xdf, 0xff, 0x28, 0x07, 0x0b, 0x57, 0xdd, 0x45,
+ 0xbc, 0x71, 0xd7, 0x37, 0xa1, 0x92, 0x74, 0x66, 0xd8, 0xed, 0xe3, 0xec, 0x00, 0x76, 0xef, 0xe8,
+ 0xe5, 0x20, 0x91, 0xbe, 0x2c, 0xf2, 0x4f, 0x51, 0x34, 0xd4, 0x0e, 0xe0, 0xee, 0x75, 0x37, 0x3d,
+ 0x6f, 0xda, 0x37, 0xed, 0x17, 0xb0, 0xf2, 0xae, 0x5b, 0x91, 0xb7, 0xb6, 0x54, 0xbf, 0x80, 0xc5,
+ 0x2b, 0xaf, 0x46, 0x7e, 0x97, 0xdc, 0x96, 0x2a, 0xcf, 0x46, 0x07, 0xca, 0x33, 0xed, 0xcf, 0x73,
+ 0xf0, 0xe8, 0x7d, 0xef, 0x49, 0xde, 0xda, 0x0e, 0xfc, 0x0c, 0x50, 0xfa, 0xee, 0xa6, 0xec, 0x9b,
+ 0xd8, 0x8e, 0x53, 0x29, 0x8d, 0xec, 0x63, 0x0f, 0x3e, 0x78, 0x8f, 0x1b, 0x95, 0xb7, 0x36, 0xfd,
+ 0x2e, 0x3f, 0x8d, 0xde, 0x71, 0xab, 0xf2, 0xd6, 0xbc, 0xfd, 0x41, 0x0e, 0x3e, 0x7e, 0xbf, 0xfb,
+ 0x95, 0xb7, 0x36, 0xfd, 0x4b, 0x50, 0x1a, 0xb8, 0x9c, 0x11, 0xb7, 0xb5, 0xff, 0xc8, 0x41, 0x79,
+ 0x27, 0x20, 0x7d, 0x7f, 0x1f, 0xf3, 0x17, 0xba, 0x0f, 0x61, 0xc2, 0x89, 0x6e, 0xda, 0x44, 0x8e,
+ 0x2b, 0xfc, 0x57, 0x25, 0x42, 0xd6, 0xb4, 0x51, 0x13, 0xaa, 0x09, 0x84, 0x7f, 0xb0, 0x10, 0x9f,
+ 0x96, 0x93, 0x8b, 0xbe, 0x29, 0xc2, 0xd5, 0xf8, 0xde, 0x0e, 0xff, 0x86, 0x5c, 0x71, 0xd2, 0x4d,
+ 0x74, 0x1f, 0xca, 0xec, 0x39, 0x2e, 0x2a, 0xf0, 0x47, 0xb9, 0x33, 0x56, 0xe0, 0x1f, 0x8a, 0x02,
+ 0x3f, 0xfd, 0xe5, 0x20, 0xcf, 0x95, 0x71, 0x5b, 0xfb, 0x0d, 0xa8, 0x28, 0xdc, 0xa8, 0x08, 0xa3,
+ 0x87, 0xad, 0x83, 0xda, 0x1d, 0x54, 0x83, 0x89, 0xc6, 0x61, 0xeb, 0xc0, 0x58, 0xdf, 0x31, 0x0e,
+ 0x37, 0xdb, 0xbb, 0xb5, 0x1c, 0x9a, 0x82, 0x8a, 0x90, 0x3c, 0x96, 0xa2, 0x11, 0xed, 0xf7, 0x46,
+ 0x60, 0x8c, 0xf7, 0x53, 0xf9, 0xa2, 0x20, 0x86, 0x1b, 0x7f, 0x51, 0xf8, 0x11, 0x14, 0x2d, 0xd2,
+ 0xeb, 0x99, 0xf2, 0xe7, 0x15, 0x99, 0x31, 0xa6, 0x47, 0x1a, 0x6e, 0x09, 0xa4, 0x1e, 0x99, 0xa0,
+ 0x55, 0x28, 0xf6, 0x84, 0x4a, 0x5e, 0x0c, 0x98, 0x19, 0x36, 0x43, 0x7a, 0x04, 0x4a, 0x7d, 0x50,
+ 0xc9, 0x5f, 0xfb, 0x41, 0x45, 0xfb, 0x1a, 0xa6, 0x87, 0x38, 0x46, 0x93, 0x50, 0xde, 0xdc, 0xde,
+ 0x36, 0xf6, 0x1b, 0xfb, 0x2f, 0x1b, 0xfa, 0x51, 0xed, 0x0e, 0x42, 0x50, 0xd5, 0x1b, 0xfb, 0xad,
+ 0x37, 0x8d, 0x58, 0x96, 0x63, 0xa0, 0xa3, 0x46, 0x3b, 0x16, 0x8c, 0x68, 0xdf, 0x00, 0xbc, 0x31,
+ 0xdd, 0x3e, 0x3e, 0x34, 0x03, 0xb3, 0x87, 0xee, 0xc3, 0x28, 0xf1, 0xfa, 0xf2, 0xd3, 0xde, 0x84,
+ 0x72, 0x75, 0x9b, 0x29, 0xd0, 0x5a, 0xfa, 0xd3, 0x40, 0xb5, 0xbe, 0xb8, 0x1a, 0xff, 0x5e, 0x6a,
+ 0x95, 0xb3, 0xb0, 0x95, 0x58, 0xe5, 0x4b, 0x2d, 0x70, 0xda, 0xdf, 0x8f, 0x40, 0xf5, 0x90, 0x78,
+ 0xfa, 0xc5, 0x21, 0x39, 0xc7, 0xc1, 0xb6, 0x49, 0xcd, 0x5b, 0x8b, 0x6b, 0x5d, 0x4d, 0xb8, 0x79,
+ 0xde, 0xa3, 0xf5, 0xd4, 0x0f, 0x80, 0xd2, 0x5e, 0x57, 0xf5, 0x30, 0x74, 0xf6, 0xb1, 0x19, 0xf6,
+ 0x03, 0xbe, 0xb5, 0x87, 0x5f, 0x60, 0x95, 0x6f, 0xba, 0x7d, 0x66, 0x65, 0xf4, 0xb0, 0xe9, 0x19,
+ 0xf6, 0x71, 0x8f, 0x57, 0x71, 0x39, 0xbd, 0x1a, 0x08, 0xb6, 0x7d, 0x6c, 0x7a, 0xdb, 0xc7, 0x3d,
+ 0x76, 0x6c, 0x5f, 0xc9, 0x89, 0x66, 0xa0, 0x36, 0xe4, 0x82, 0xeb, 0x5d, 0x58, 0x50, 0xa5, 0xc6,
+ 0x76, 0x63, 0xaf, 0xb9, 0xdf, 0x6c, 0x37, 0xf4, 0x5a, 0x0e, 0x2d, 0xc2, 0xec, 0x80, 0x76, 0x73,
+ 0x6b, 0xab, 0x71, 0xc4, 0x16, 0xa9, 0x08, 0x63, 0x8d, 0x9e, 0x4f, 0x2f, 0xeb, 0x7f, 0x36, 0x03,
+ 0xc5, 0x96, 0x18, 0x20, 0xda, 0x06, 0xd8, 0x76, 0x42, 0xf3, 0xd8, 0xc5, 0x2d, 0x97, 0xa2, 0x6a,
+ 0x3c, 0x70, 0x8e, 0x5c, 0x1a, 0x68, 0x6b, 0x73, 0xbf, 0xfc, 0xa7, 0x7f, 0xf9, 0xf5, 0x48, 0x4d,
+ 0x2b, 0xaf, 0x9d, 0xad, 0xaf, 0x49, 0xbb, 0x2f, 0x72, 0x9f, 0xa2, 0x57, 0x50, 0xd6, 0x31, 0xf6,
+ 0xde, 0x97, 0x66, 0x9e, 0xd3, 0x4c, 0x69, 0x13, 0x8c, 0x26, 0x32, 0x64, 0x3c, 0x0d, 0x28, 0xcb,
+ 0x6a, 0x0a, 0xb7, 0xbc, 0x3e, 0x52, 0x62, 0x27, 0xc3, 0xb2, 0xc0, 0x59, 0x90, 0x56, 0x61, 0x2c,
+ 0x0d, 0xe1, 0xdc, 0xeb, 0x33, 0x9a, 0x5d, 0xa8, 0xc4, 0x59, 0xf7, 0x3d, 0x88, 0x16, 0x39, 0xd1,
+ 0xb4, 0x56, 0x4d, 0x8d, 0x4a, 0x32, 0x6d, 0xc1, 0xf8, 0x36, 0x76, 0xf1, 0x8d, 0xbb, 0x13, 0x1b,
+ 0x31, 0x92, 0x26, 0x80, 0xbc, 0xb2, 0xd6, 0xea, 0x53, 0x54, 0x53, 0x7e, 0xcb, 0xb6, 0x1f, 0x76,
+ 0xaf, 0xef, 0x4f, 0x62, 0xc9, 0xa8, 0x5a, 0x30, 0x11, 0xdf, 0x57, 0x63, 0x64, 0x48, 0xf9, 0xfd,
+ 0x00, 0x17, 0x67, 0xe8, 0x96, 0x39, 0xdd, 0xac, 0x56, 0xe3, 0x74, 0x29, 0x6b, 0x46, 0xf8, 0x5b,
+ 0x30, 0x99, 0xbe, 0x79, 0xc6, 0x38, 0x93, 0x5b, 0x87, 0x69, 0x4d, 0x86, 0xf6, 0x3e, 0xa7, 0x5d,
+ 0xd0, 0xa6, 0x19, 0xed, 0x00, 0x07, 0x63, 0xfe, 0x12, 0x8a, 0xaf, 0x5c, 0x72, 0xbe, 0x69, 0xdb,
+ 0xa8, 0xa2, 0x7c, 0xa3, 0xbc, 0x3e, 0xaa, 0xa4, 0x8d, 0x88, 0x2a, 0x60, 0x2d, 0x9d, 0xdf, 0x51,
+ 0x78, 0x17, 0x89, 0x32, 0x69, 0x89, 0x19, 0xe3, 0x39, 0x82, 0x6a, 0x7c, 0xa7, 0x73, 0xeb, 0x04,
+ 0x5b, 0xa7, 0x99, 0x00, 0x4d, 0xa6, 0x31, 0x06, 0x6a, 0xf7, 0x38, 0xe1, 0xbc, 0x86, 0x18, 0xa1,
+ 0x6a, 0xcf, 0x48, 0xf7, 0xa1, 0x2c, 0x62, 0xee, 0x90, 0x78, 0xcd, 0x4e, 0x6a, 0x21, 0xe2, 0x84,
+ 0x92, 0xe9, 0xe2, 0x12, 0x67, 0x9c, 0xd1, 0x26, 0x93, 0x80, 0xe5, 0xc6, 0x72, 0x61, 0x65, 0xe4,
+ 0xbd, 0x3f, 0x9f, 0xb2, 0xb0, 0x69, 0x6b, 0x46, 0xa8, 0x43, 0x65, 0x07, 0xd3, 0xd4, 0xcd, 0xc0,
+ 0xc1, 0x31, 0x4f, 0x0f, 0xb9, 0xc5, 0xa5, 0xdd, 0xe5, 0x94, 0x73, 0xda, 0x14, 0xa3, 0x54, 0xec,
+ 0x19, 0xe7, 0x4f, 0xa0, 0xa0, 0xe3, 0x63, 0x42, 0xde, 0xbd, 0xc3, 0x67, 0x39, 0xcf, 0xa4, 0x06,
+ 0x62, 0x87, 0x33, 0x1b, 0x46, 0xf0, 0x1a, 0xa6, 0xb6, 0x88, 0xeb, 0x62, 0x2b, 0xfd, 0xe6, 0xee,
+ 0x5d, 0x5c, 0x2b, 0x9c, 0x6b, 0x49, 0x9b, 0x65, 0x5c, 0x19, 0x73, 0x46, 0xfb, 0x53, 0xa8, 0xed,
+ 0x60, 0xaa, 0xbe, 0xfc, 0x57, 0x37, 0xeb, 0xdc, 0xc0, 0x6f, 0x08, 0x25, 0x4a, 0x7b, 0xc0, 0xb9,
+ 0x17, 0xb5, 0x19, 0x39, 0x5e, 0x45, 0xcb, 0xa8, 0x4f, 0x61, 0x66, 0x07, 0xd3, 0xec, 0xeb, 0xc6,
+ 0x61, 0x1b, 0x2f, 0xf9, 0x51, 0x6c, 0x06, 0xaf, 0x7d, 0xc0, 0x1d, 0xdd, 0xd3, 0x16, 0xa4, 0xa3,
+ 0x0c, 0x82, 0x39, 0x0b, 0x60, 0x7e, 0x2b, 0xc0, 0x26, 0xc5, 0xed, 0xc0, 0xec, 0x74, 0x1c, 0xeb,
+ 0xc8, 0x3a, 0xc1, 0x76, 0xdf, 0x65, 0x79, 0xfd, 0xc1, 0xaa, 0xf2, 0xb3, 0xe4, 0x0c, 0x20, 0x33,
+ 0x6b, 0x1f, 0x73, 0x87, 0x2b, 0xda, 0x32, 0x9f, 0xb5, 0xe1, 0xac, 0xd2, 0xa7, 0xd8, 0x29, 0xb7,
+ 0xed, 0xf3, 0x0a, 0x56, 0xe6, 0xb3, 0x03, 0xd3, 0x4a, 0x8f, 0x7e, 0xb3, 0x8f, 0xfb, 0x38, 0x44,
+ 0xcb, 0x43, 0xfd, 0x09, 0x65, 0xc6, 0x97, 0xc6, 0x7d, 0xdd, 0xd5, 0xe6, 0x33, 0xe3, 0x13, 0x06,
+ 0xd2, 0x8f, 0xd2, 0x8b, 0xff, 0xb1, 0x9f, 0x21, 0x6c, 0xcc, 0xcf, 0x0f, 0xa1, 0x26, 0xb6, 0x73,
+ 0xaa, 0xf0, 0xbe, 0x7a, 0xbb, 0x25, 0x20, 0xed, 0xce, 0xe3, 0x1c, 0xfa, 0x06, 0x66, 0x0f, 0x71,
+ 0xd0, 0x21, 0x41, 0x8f, 0xd7, 0x63, 0x2d, 0x1f, 0x07, 0x83, 0x0c, 0x5c, 0x91, 0xe9, 0xd9, 0x87,
+ 0xbc, 0x67, 0xf7, 0xb5, 0x45, 0xd6, 0xb3, 0xa1, 0x14, 0x22, 0xf9, 0x94, 0x45, 0x32, 0x12, 0x85,
+ 0xea, 0xbb, 0x48, 0x95, 0x33, 0x2a, 0x65, 0xc8, 0xa8, 0xde, 0x42, 0x79, 0x07, 0xd3, 0xc6, 0x05,
+ 0xe5, 0x55, 0x1a, 0x4a, 0x46, 0x94, 0xd4, 0x7e, 0x4b, 0xf3, 0xa9, 0x62, 0x4e, 0xc7, 0xb4, 0x1f,
+ 0x78, 0x5c, 0x19, 0xaa, 0xc4, 0x29, 0x1a, 0x46, 0xfc, 0x0d, 0xff, 0x9d, 0x95, 0x78, 0x21, 0xc0,
+ 0xdf, 0xcb, 0x1e, 0x61, 0x8a, 0xe6, 0x56, 0xe5, 0x4f, 0xec, 0x55, 0xd5, 0xf5, 0xc7, 0x43, 0x86,
+ 0x86, 0xd1, 0xfb, 0xb0, 0xb8, 0x83, 0xe9, 0xde, 0xf0, 0x1b, 0xe8, 0xea, 0x39, 0xb1, 0xac, 0xfe,
+ 0x48, 0x4e, 0xb9, 0x17, 0xaf, 0x3d, 0xe2, 0x9e, 0x34, 0xed, 0x9e, 0x1c, 0xc2, 0x70, 0x46, 0xe6,
+ 0xf1, 0x04, 0x66, 0x87, 0xea, 0x6f, 0xe2, 0x4d, 0x59, 0xde, 0xa1, 0x6c, 0xcc, 0x53, 0x9b, 0x1f,
+ 0xf3, 0x49, 0x99, 0x3a, 0xe0, 0x61, 0xfe, 0x8a, 0x4a, 0x36, 0x73, 0xd0, 0x27, 0xea, 0x2f, 0x72,
+ 0x9f, 0xbe, 0xfc, 0x06, 0x96, 0x49, 0xd0, 0xe5, 0xb6, 0x16, 0x09, 0xec, 0x55, 0xf1, 0xdf, 0x1b,
+ 0x44, 0x5c, 0x2f, 0x2b, 0x6f, 0x78, 0x9b, 0xd5, 0x90, 0xad, 0xbd, 0xf6, 0xcf, 0xd6, 0xba, 0x0e,
+ 0x3d, 0xe9, 0x1f, 0xaf, 0x5a, 0xa4, 0xb7, 0x16, 0x99, 0xac, 0x09, 0x93, 0xcf, 0xe4, 0xff, 0x88,
+ 0x70, 0xb6, 0xb1, 0xd6, 0x25, 0xd1, 0xff, 0xce, 0x70, 0x5c, 0xe0, 0xd2, 0x27, 0xff, 0x1d, 0x00,
+ 0x00, 0xff, 0xff, 0x85, 0x04, 0xa7, 0x3a, 0xbd, 0x41, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
index 217a597..d157d23 100644
--- a/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v5/go/voltha/voltha.pb.go
@@ -86,6 +86,7 @@
const OperStatus_FAILED = OperStatus_Types(common.OperStatus_FAILED)
const OperStatus_RECONCILING = OperStatus_Types(common.OperStatus_RECONCILING)
const OperStatus_RECONCILING_FAILED = OperStatus_Types(common.OperStatus_RECONCILING_FAILED)
+const OperStatus_REBOOTED = OperStatus_Types(common.OperStatus_REBOOTED)
// ConnectStatus_Types from public import voltha_protos/common.proto
type ConnectStatus_Types = common.ConnectStatus_Types
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 463d541..6ab283f 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -142,7 +142,7 @@
github.com/opencord/voltha-lib-go/v7/pkg/probe
github.com/opencord/voltha-lib-go/v7/pkg/techprofile
github.com/opencord/voltha-lib-go/v7/pkg/version
-# github.com/opencord/voltha-protos/v5 v5.2.2
+# github.com/opencord/voltha-protos/v5 v5.2.5
## explicit
github.com/opencord/voltha-protos/v5/go/adapter_service
github.com/opencord/voltha-protos/v5/go/common