diff --git a/api/event-bus.html b/api/event-bus.html
index 8059c1d885..6d4a847352 100644
--- a/api/event-bus.html
+++ b/api/event-bus.html
@@ -215,6 +215,20 @@
EventBus
Kafka eventbus
+
+
+jetstreamExotic
+
+
+JetStreamConfig
+
+
+ |
+
+(Optional)
+ Exotic JetStream
+ |
+
@@ -291,6 +305,20 @@ EventBusSpec
Kafka eventbus
+
+
+jetstreamExotic
+
+
+JetStreamConfig
+
+
+ |
+
+(Optional)
+ Exotic JetStream
+ |
+
EventBusStatus
@@ -623,7 +651,8 @@ JetStreamConfig
(Appears on:
-BusConfig)
+BusConfig,
+EventBusSpec)
diff --git a/api/event-bus.md b/api/event-bus.md
index 95d9c2d58a..d26fe55ce0 100644
--- a/api/event-bus.md
+++ b/api/event-bus.md
@@ -211,6 +211,19 @@ Kafka eventbus
+
+
+jetstreamExotic
+ JetStreamConfig
+
+ |
+
+(Optional)
+
+Exotic JetStream
+
+ |
+
@@ -283,6 +296,19 @@ Kafka eventbus
+
+
+jetstreamExotic
+ JetStreamConfig
+
+ |
+
+(Optional)
+
+Exotic JetStream
+
+ |
+
@@ -619,7 +645,8 @@ JetStreamConfig
(Appears on:
-BusConfig)
+BusConfig,
+EventBusSpec)
diff --git a/api/jsonschema/schema.json b/api/jsonschema/schema.json
index 2d98a3a025..b6ed8bfb59 100644
--- a/api/jsonschema/schema.json
+++ b/api/jsonschema/schema.json
@@ -380,6 +380,10 @@
"jetstream": {
"$ref": "#/definitions/io.argoproj.eventbus.v1alpha1.JetStreamBus"
},
+ "jetstreamExotic": {
+ "$ref": "#/definitions/io.argoproj.eventbus.v1alpha1.JetStreamConfig",
+ "description": "Exotic JetStream"
+ },
"kafka": {
"$ref": "#/definitions/io.argoproj.eventbus.v1alpha1.KafkaBus",
"description": "Kafka eventbus"
diff --git a/api/openapi-spec/swagger.json b/api/openapi-spec/swagger.json
index e5a51d70ce..9db92002af 100644
--- a/api/openapi-spec/swagger.json
+++ b/api/openapi-spec/swagger.json
@@ -373,6 +373,10 @@
"jetstream": {
"$ref": "#/definitions/io.argoproj.eventbus.v1alpha1.JetStreamBus"
},
+ "jetstreamExotic": {
+ "description": "Exotic JetStream",
+ "$ref": "#/definitions/io.argoproj.eventbus.v1alpha1.JetStreamConfig"
+ },
"kafka": {
"description": "Kafka eventbus",
"$ref": "#/definitions/io.argoproj.eventbus.v1alpha1.KafkaBus"
diff --git a/common/leaderelection/leaderelection.go b/common/leaderelection/leaderelection.go
index f3ed2218ea..deac594c3c 100644
--- a/common/leaderelection/leaderelection.go
+++ b/common/leaderelection/leaderelection.go
@@ -45,7 +45,11 @@ func NewElector(ctx context.Context, eventBusConfig eventbusv1alpha1.BusConfig,
case eventBusConfig.NATS != nil:
return newEventBusElector(ctx, eventBusConfig.NATS.Auth, clusterName, clusterSize, eventBusConfig.NATS.URL)
case eventBusConfig.JetStream != nil:
- return newEventBusElector(ctx, &eventbusv1alpha1.AuthStrategyBasic, clusterName, clusterSize, eventBusConfig.JetStream.URL)
+ if eventBusConfig.JetStream.AccessSecret != nil {
+ return newEventBusElector(ctx, &eventbusv1alpha1.AuthStrategyBasic, clusterName, clusterSize, eventBusConfig.JetStream.URL)
+ } else {
+ return newEventBusElector(ctx, &eventbusv1alpha1.AuthStrategyNone, clusterName, clusterSize, eventBusConfig.JetStream.URL)
+ }
default:
return nil, fmt.Errorf("invalid event bus")
}
diff --git a/common/leaderelection/leaderelection_test.go b/common/leaderelection/leaderelection_test.go
index 3a3778bdd5..7a0de21d6c 100644
--- a/common/leaderelection/leaderelection_test.go
+++ b/common/leaderelection/leaderelection_test.go
@@ -8,12 +8,14 @@ import (
"github.com/argoproj/argo-events/common"
eventbusv1alpha1 "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1"
"github.com/stretchr/testify/assert"
+ v1 "k8s.io/api/core/v1"
)
var (
configs = []eventbusv1alpha1.BusConfig{
{NATS: &eventbusv1alpha1.NATSConfig{}},
{JetStream: &eventbusv1alpha1.JetStreamConfig{}},
+ {JetStream: &eventbusv1alpha1.JetStreamConfig{AccessSecret: &v1.SecretKeySelector{}}},
}
)
diff --git a/controllers/eventbus/installer/exotic_jetstream.go b/controllers/eventbus/installer/exotic_jetstream.go
new file mode 100644
index 0000000000..2891aba68e
--- /dev/null
+++ b/controllers/eventbus/installer/exotic_jetstream.go
@@ -0,0 +1,43 @@
+package installer
+
+import (
+ "context"
+ "fmt"
+
+ "go.uber.org/zap"
+
+ "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1"
+)
+
+// exoticJetStreamInstaller is an inalleration implementation of exotic jetstream config.
+type exoticJetStreamInstaller struct {
+ eventBus *v1alpha1.EventBus
+
+ logger *zap.SugaredLogger
+}
+
+// NewExoticJetStreamInstaller return a new exoticJetStreamInstaller
+func NewExoticJetStreamInstaller(eventBus *v1alpha1.EventBus, logger *zap.SugaredLogger) Installer {
+ return &exoticJetStreamInstaller{
+ eventBus: eventBus,
+ logger: logger.Named("exotic-jetstream"),
+ }
+}
+
+func (i *exoticJetStreamInstaller) Install(ctx context.Context) (*v1alpha1.BusConfig, error) {
+ JetStreamObj := i.eventBus.Spec.JetStreamExotic
+ if JetStreamObj == nil {
+ return nil, fmt.Errorf("invalid request")
+ }
+ i.eventBus.Status.MarkDeployed("Skipped", "Skip deployment because of using exotic config.")
+ i.logger.Info("use exotic config")
+ busConfig := &v1alpha1.BusConfig{
+ JetStream: JetStreamObj,
+ }
+ return busConfig, nil
+}
+
+func (i *exoticJetStreamInstaller) Uninstall(ctx context.Context) error {
+ i.logger.Info("nothing to uninstall")
+ return nil
+}
diff --git a/controllers/eventbus/installer/exotic_jetstream_test.go b/controllers/eventbus/installer/exotic_jetstream_test.go
new file mode 100644
index 0000000000..6b1dba87cc
--- /dev/null
+++ b/controllers/eventbus/installer/exotic_jetstream_test.go
@@ -0,0 +1,50 @@
+package installer
+
+import (
+ "context"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+
+ "github.com/argoproj/argo-events/common/logging"
+ "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1"
+)
+
+var (
+ testJSExoticURL = "nats://nats:4222"
+
+ testJSExoticBus = &v1alpha1.EventBus{
+ TypeMeta: metav1.TypeMeta{
+ APIVersion: v1alpha1.SchemeGroupVersion.String(),
+ Kind: "EventBus",
+ },
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: testNamespace,
+ Name: testExoticName,
+ },
+ Spec: v1alpha1.EventBusSpec{
+ JetStreamExotic: &v1alpha1.JetStreamConfig{
+ URL: testJSExoticURL,
+ },
+ },
+ }
+)
+
+func TestInstallationJSExotic(t *testing.T) {
+ t.Run("installation with exotic jetstream config", func(t *testing.T) {
+ installer := NewExoticJetStreamInstaller(testJSExoticBus, logging.NewArgoEventsLogger())
+ conf, err := installer.Install(context.TODO())
+ assert.NoError(t, err)
+ assert.NotNil(t, conf.JetStream)
+ assert.Equal(t, conf.JetStream.URL, testJSExoticURL)
+ })
+}
+
+func TestUninstallationJSExotic(t *testing.T) {
+ t.Run("uninstallation with exotic jetstream config", func(t *testing.T) {
+ installer := NewExoticJetStreamInstaller(testJSExoticBus, logging.NewArgoEventsLogger())
+ err := installer.Uninstall(context.TODO())
+ assert.NoError(t, err)
+ })
+}
diff --git a/controllers/eventbus/installer/installer.go b/controllers/eventbus/installer/installer.go
index ab686ec6ca..194caaa61b 100644
--- a/controllers/eventbus/installer/installer.go
+++ b/controllers/eventbus/installer/installer.go
@@ -51,6 +51,8 @@ func getInstaller(eventBus *v1alpha1.EventBus, client client.Client, kubeClient
return NewJetStreamInstaller(client, eventBus, config, getLabels(eventBus), kubeClient, logger), nil
} else if kafka := eventBus.Spec.Kafka; kafka != nil {
return NewExoticKafkaInstaller(eventBus, logger), nil
+ } else if js := eventBus.Spec.JetStreamExotic; js != nil {
+ return NewExoticJetStreamInstaller(eventBus, logger), nil
}
return nil, fmt.Errorf("invalid eventbus spec")
}
diff --git a/controllers/eventbus/installer/installer_test.go b/controllers/eventbus/installer/installer_test.go
index 647de02569..ece0f1af3c 100644
--- a/controllers/eventbus/installer/installer_test.go
+++ b/controllers/eventbus/installer/installer_test.go
@@ -70,6 +70,12 @@ func TestGetInstaller(t *testing.T) {
assert.NotNil(t, installer)
_, ok := installer.(*jetStreamInstaller)
assert.True(t, ok)
+
+ installer, err = getInstaller(testJetStreamExoticBus, nil, nil, fakeConfig, zaptest.NewLogger(t).Sugar())
+ assert.NoError(t, err)
+ assert.NotNil(t, installer)
+ _, ok = installer.(*exoticJetStreamInstaller)
+ assert.True(t, ok)
})
}
diff --git a/controllers/eventbus/installer/jetstream_test.go b/controllers/eventbus/installer/jetstream_test.go
index b2371f1eca..dfc83fa318 100644
--- a/controllers/eventbus/installer/jetstream_test.go
+++ b/controllers/eventbus/installer/jetstream_test.go
@@ -34,6 +34,22 @@ var (
},
},
}
+
+ testJetStreamExoticBus = &v1alpha1.EventBus{
+ TypeMeta: metav1.TypeMeta{
+ APIVersion: v1alpha1.SchemeGroupVersion.String(),
+ Kind: "EventBus",
+ },
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: testNamespace,
+ Name: testName,
+ },
+ Spec: v1alpha1.EventBusSpec{
+ JetStreamExotic: &v1alpha1.JetStreamConfig{
+ URL: "nats://nats:4222",
+ },
+ },
+ }
)
func TestJetStreamBadInstallation(t *testing.T) {
diff --git a/controllers/eventbus/validate.go b/controllers/eventbus/validate.go
index aa56b4fda8..17bdd39408 100644
--- a/controllers/eventbus/validate.go
+++ b/controllers/eventbus/validate.go
@@ -8,8 +8,8 @@ import (
// ValidateEventBus accepts an EventBus and performs validation against it
func ValidateEventBus(eb *v1alpha1.EventBus) error {
- if eb.Spec.NATS == nil && eb.Spec.JetStream == nil && eb.Spec.Kafka == nil {
- return fmt.Errorf("invalid spec: either \"nats\", \"jetstream\", or \"kafka\" needs to be specified")
+ if eb.Spec.NATS == nil && eb.Spec.JetStream == nil && eb.Spec.Kafka == nil && eb.Spec.JetStreamExotic == nil {
+ return fmt.Errorf("invalid spec: either \"nats\", \"jetstream\", \"jetstreamExotic\", or \"kafka\" needs to be specified")
}
if x := eb.Spec.NATS; x != nil {
if x.Native != nil && x.Exotic != nil {
@@ -41,5 +41,10 @@ func ValidateEventBus(eb *v1alpha1.EventBus) error {
return fmt.Errorf("\"spec.kafka.url\" is missing")
}
}
+ if x := eb.Spec.JetStreamExotic; x != nil {
+ if x.URL == "" {
+ return fmt.Errorf("\"spec.jetstreamExotic.url\" is missing")
+ }
+ }
return nil
}
diff --git a/controllers/eventbus/validate_test.go b/controllers/eventbus/validate_test.go
index 6041e64d54..2a28229aa6 100644
--- a/controllers/eventbus/validate_test.go
+++ b/controllers/eventbus/validate_test.go
@@ -39,6 +39,18 @@ var (
},
}
+ testJetStreamExoticBus = &v1alpha1.EventBus{
+ ObjectMeta: metav1.ObjectMeta{
+ Namespace: "test-ns",
+ Name: common.DefaultEventBusName,
+ },
+ Spec: v1alpha1.EventBusSpec{
+ JetStreamExotic: &v1alpha1.JetStreamConfig{
+ URL: "nats://nats:4222",
+ },
+ },
+ }
+
testKafkaEventBus = &v1alpha1.EventBus{
ObjectMeta: metav1.ObjectMeta{
Namespace: "test-ns",
@@ -68,6 +80,11 @@ func TestValidate(t *testing.T) {
assert.NoError(t, err)
})
+ t.Run("test good js exotic eventbus", func(t *testing.T) {
+ err := ValidateEventBus(testJetStreamExoticBus)
+ assert.NoError(t, err)
+ })
+
t.Run("test bad eventbus", func(t *testing.T) {
eb := testNatsEventBus.DeepCopy()
eb.Spec.NATS = nil
@@ -130,4 +147,12 @@ func TestValidate(t *testing.T) {
assert.Error(t, err)
assert.Contains(t, err.Error(), "\"spec.kafka.url\" is missing")
})
+
+ t.Run("test exotic js eventbus empty URL", func(t *testing.T) {
+ eb := testJetStreamExoticBus.DeepCopy()
+ eb.Spec.JetStreamExotic.URL = ""
+ err := ValidateEventBus(eb)
+ assert.Error(t, err)
+ assert.True(t, strings.Contains(err.Error(), "\"spec.jetstreamExotic.url\" is missing"))
+ })
}
diff --git a/docs/eventbus/jetstream.md b/docs/eventbus/jetstream.md
index d91fbde3bf..2ed190143c 100644
--- a/docs/eventbus/jetstream.md
+++ b/docs/eventbus/jetstream.md
@@ -64,3 +64,21 @@ For Jetstream, TLS is turned on for all client-server communication as well as b
## How it works under the hood
Jetstream has the concept of a Stream, and Subjects (i.e. topics) which are used on a Stream. From the documentation: “Each Stream defines how messages are stored and what the limits (duration, size, interest) of the retention are.” For Argo Events, we have one Stream called "default" with a single set of settings, but we have multiple subjects, each of which is named `default..`. Sensors subscribe to the subjects they need using durable consumers.
+
+### Exotic
+
+To use an existing JetStream service, follow the example below.
+
+```yaml
+apiVersion: argoproj.io/v1alpha1
+kind: EventBus
+metadata:
+ name: default
+spec:
+ jetstreamExotic:
+ url: nats://xxxxx:xxx
+ accessSecret:
+ name: my-secret-name
+ key: secret-key
+ streamConfig: ""
+```
diff --git a/eventbus/driver.go b/eventbus/driver.go
index 1277713916..585aa67db7 100644
--- a/eventbus/driver.go
+++ b/eventbus/driver.go
@@ -117,7 +117,11 @@ func GetAuth(ctx context.Context, eventBusConfig eventbusv1alpha1.BusConfig) (*e
case eventBusConfig.NATS != nil:
eventBusAuth = eventBusConfig.NATS.Auth
case eventBusConfig.JetStream != nil:
- eventBusAuth = &eventbusv1alpha1.AuthStrategyBasic
+ if eventBusConfig.JetStream.AccessSecret != nil {
+ eventBusAuth = &eventbusv1alpha1.AuthStrategyBasic
+ } else {
+ eventBusAuth = nil
+ }
case eventBusConfig.Kafka != nil:
eventBusAuth = nil
default:
diff --git a/pkg/apis/eventbus/v1alpha1/eventbus_types.go b/pkg/apis/eventbus/v1alpha1/eventbus_types.go
index deae6e8871..96259d1872 100644
--- a/pkg/apis/eventbus/v1alpha1/eventbus_types.go
+++ b/pkg/apis/eventbus/v1alpha1/eventbus_types.go
@@ -39,6 +39,9 @@ type EventBusSpec struct {
// +optional
// Kafka eventbus
Kafka *KafkaBus `json:"kafka,omitempty" protobuf:"bytes,3,opt,name=kafka"`
+ // Exotic JetStream
+ // +optional
+ JetStreamExotic *JetStreamConfig `json:"jetstreamExotic,omitempty" protobuf:"bytes,4,opt,name=jetstreamExotic"`
}
// EventBusStatus holds the status of the eventbus resource
diff --git a/pkg/apis/eventbus/v1alpha1/generated.pb.go b/pkg/apis/eventbus/v1alpha1/generated.pb.go
index 083e447e8c..94552b2303 100644
--- a/pkg/apis/eventbus/v1alpha1/generated.pb.go
+++ b/pkg/apis/eventbus/v1alpha1/generated.pb.go
@@ -464,133 +464,135 @@ func init() {
}
var fileDescriptor_871e47633eb7aad4 = []byte{
- // 2011 bytes of a gzipped FileDescriptorProto
+ // 2035 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x59, 0x4f, 0x6f, 0x1b, 0xc7,
- 0x15, 0xd7, 0x8a, 0x94, 0x44, 0x0e, 0xa9, 0x3f, 0x1c, 0x29, 0xcd, 0x5a, 0x88, 0x49, 0x83, 0x41,
+ 0x15, 0xd7, 0x8a, 0x94, 0x44, 0x0e, 0x29, 0x51, 0x1c, 0x29, 0xcd, 0x5a, 0x88, 0x49, 0x83, 0x41,
0x0a, 0x17, 0x89, 0x97, 0x75, 0x91, 0xb6, 0xae, 0x7b, 0x70, 0xb9, 0x8a, 0x62, 0xcb, 0x16, 0x65,
- 0x75, 0x28, 0x1b, 0x48, 0x1a, 0xd4, 0x1d, 0xad, 0x46, 0xd4, 0x4a, 0xfb, 0x87, 0x9d, 0x99, 0x25,
- 0xc4, 0x9e, 0x8a, 0xf6, 0xd0, 0x6b, 0x50, 0x14, 0x45, 0xbf, 0x41, 0x81, 0xde, 0xdb, 0x6f, 0x50,
- 0xd4, 0x87, 0x02, 0x0d, 0x7a, 0x69, 0x4e, 0x44, 0xcc, 0xa0, 0x5f, 0xc2, 0xa7, 0x62, 0x66, 0x67,
- 0xff, 0x90, 0x4b, 0xd9, 0x92, 0x29, 0xd7, 0xc8, 0x6d, 0xe7, 0xbd, 0x37, 0xbf, 0xf7, 0xe6, 0xcd,
- 0xcc, 0x7b, 0xbf, 0x21, 0xc1, 0xfd, 0x8e, 0xcd, 0x8f, 0x82, 0x7d, 0xc3, 0xf2, 0xdd, 0x06, 0xa6,
- 0x1d, 0xbf, 0x4b, 0xfd, 0x63, 0xf9, 0x71, 0x83, 0xf4, 0x88, 0xc7, 0x59, 0xa3, 0x7b, 0xd2, 0x69,
- 0xe0, 0xae, 0xcd, 0x1a, 0x72, 0xbc, 0x1f, 0xb0, 0x46, 0xef, 0x26, 0x76, 0xba, 0x47, 0xf8, 0x66,
- 0xa3, 0x43, 0x3c, 0x42, 0x31, 0x27, 0x07, 0x46, 0x97, 0xfa, 0xdc, 0x87, 0xb7, 0x13, 0x2c, 0x23,
- 0xc2, 0x92, 0x1f, 0x4f, 0x42, 0x2c, 0xa3, 0x7b, 0xd2, 0x31, 0x04, 0x96, 0x11, 0x61, 0x19, 0x11,
- 0xd6, 0xfa, 0x9d, 0x73, 0xc7, 0x61, 0xf9, 0xae, 0xeb, 0x7b, 0xe3, 0xce, 0xd7, 0x6f, 0xa4, 0x00,
- 0x3a, 0x7e, 0xc7, 0x6f, 0x48, 0xf1, 0x7e, 0x70, 0x28, 0x47, 0x72, 0x20, 0xbf, 0x94, 0x79, 0xfd,
- 0xe4, 0x16, 0x33, 0x6c, 0x5f, 0x40, 0x36, 0x2c, 0x9f, 0x92, 0x46, 0x2f, 0xb3, 0x9e, 0xf5, 0x0f,
- 0x13, 0x1b, 0x17, 0x5b, 0x47, 0xb6, 0x47, 0x68, 0x3f, 0x8a, 0xa3, 0x41, 0x09, 0xf3, 0x03, 0x6a,
- 0x91, 0x0b, 0xcd, 0x62, 0x0d, 0x97, 0x70, 0x3c, 0xc9, 0x57, 0xe3, 0xac, 0x59, 0x34, 0xf0, 0xb8,
- 0xed, 0x66, 0xdd, 0xfc, 0xe0, 0x65, 0x13, 0x98, 0x75, 0x44, 0x5c, 0x3c, 0x3e, 0xaf, 0xfe, 0xef,
- 0x59, 0x50, 0x34, 0x03, 0xb6, 0xe1, 0x7b, 0x87, 0x76, 0x07, 0x1e, 0x80, 0xbc, 0x87, 0x39, 0xd3,
- 0xb5, 0x6b, 0xda, 0xf5, 0xd2, 0xf7, 0x3e, 0x36, 0x5e, 0x7d, 0x07, 0x8d, 0x9d, 0xe6, 0x5e, 0x3b,
- 0x44, 0x35, 0x0b, 0xc3, 0x41, 0x2d, 0x2f, 0xc6, 0x48, 0xa2, 0xc3, 0x53, 0x50, 0x3c, 0x26, 0x9c,
- 0x71, 0x4a, 0xb0, 0xab, 0xcf, 0x4a, 0x57, 0x0f, 0xa6, 0x71, 0x75, 0x9f, 0xf0, 0xb6, 0x04, 0x53,
- 0xfe, 0x16, 0x87, 0x83, 0x5a, 0x31, 0x16, 0xa2, 0xc4, 0x19, 0x24, 0x60, 0xee, 0x04, 0x1f, 0x9e,
- 0x60, 0x3d, 0x27, 0xbd, 0x7e, 0x34, 0x8d, 0xd7, 0x07, 0x02, 0xc8, 0x0c, 0x98, 0x59, 0x1c, 0x0e,
- 0x6a, 0x73, 0x72, 0x84, 0x42, 0xf4, 0xfa, 0xdf, 0x66, 0x41, 0x65, 0xc3, 0xf7, 0x38, 0x16, 0xdb,
- 0xb0, 0x47, 0xdc, 0xae, 0x83, 0x39, 0x81, 0x9f, 0x80, 0x62, 0x74, 0x4a, 0xa2, 0x0c, 0x5f, 0x37,
- 0xc2, 0x6d, 0x13, 0x3e, 0x0c, 0x71, 0xee, 0x8c, 0xde, 0x4d, 0x03, 0x29, 0x23, 0x44, 0x7e, 0x19,
- 0xd8, 0x94, 0xb8, 0x22, 0x10, 0xb3, 0xf2, 0x74, 0x50, 0x9b, 0x11, 0xeb, 0x8a, 0xb4, 0x0c, 0x25,
- 0x68, 0x70, 0x1f, 0x2c, 0xdb, 0x2e, 0xee, 0x90, 0xdd, 0xc0, 0x71, 0x76, 0x7d, 0xc7, 0xb6, 0xfa,
- 0x32, 0xaf, 0x45, 0xf3, 0x96, 0x9a, 0xb6, 0xbc, 0x35, 0xaa, 0x7e, 0x3e, 0xa8, 0x5d, 0xcd, 0x1e,
- 0x79, 0x23, 0x31, 0x40, 0xe3, 0x80, 0xc2, 0x07, 0x23, 0x56, 0x40, 0x6d, 0xde, 0x17, 0x6b, 0x23,
- 0xa7, 0x5c, 0x65, 0xf1, 0xdd, 0x49, 0x8b, 0x68, 0x8f, 0x9a, 0x9a, 0xab, 0x22, 0x88, 0x31, 0x21,
- 0x1a, 0x07, 0xac, 0xff, 0x73, 0x16, 0x14, 0x36, 0x45, 0xa6, 0xcd, 0x80, 0xc1, 0x5f, 0x80, 0x82,
- 0xb8, 0x1e, 0x07, 0x98, 0x63, 0x95, 0xae, 0xef, 0xa6, 0x3c, 0xc5, 0xa7, 0x3c, 0xd9, 0x23, 0x61,
- 0x2d, 0x7c, 0x3f, 0xdc, 0x3f, 0x26, 0x16, 0x6f, 0x11, 0x8e, 0x4d, 0xa8, 0xd6, 0x0f, 0x12, 0x19,
- 0x8a, 0x51, 0xe1, 0x31, 0xc8, 0xb3, 0x2e, 0xb1, 0xd4, 0x19, 0xbc, 0x37, 0xcd, 0x69, 0x88, 0xa2,
- 0x6e, 0x77, 0x89, 0x65, 0x96, 0x95, 0xd7, 0xbc, 0x18, 0x21, 0xe9, 0x03, 0x52, 0x30, 0xcf, 0x38,
- 0xe6, 0x01, 0x53, 0x59, 0xbb, 0x7f, 0x29, 0xde, 0x24, 0xa2, 0xb9, 0xa4, 0xfc, 0xcd, 0x87, 0x63,
- 0xa4, 0x3c, 0xd5, 0xff, 0xa3, 0x81, 0x72, 0x64, 0xba, 0x6d, 0x33, 0x0e, 0x3f, 0xcb, 0xa4, 0xd4,
- 0x38, 0x5f, 0x4a, 0xc5, 0x6c, 0x99, 0xd0, 0x15, 0xe5, 0xaa, 0x10, 0x49, 0x52, 0xe9, 0xb4, 0xc1,
- 0x9c, 0xcd, 0x89, 0xcb, 0xf4, 0xd9, 0x6b, 0xb9, 0x69, 0x6f, 0x57, 0x14, 0xb6, 0xb9, 0xa8, 0x1c,
- 0xce, 0x6d, 0x09, 0x68, 0x14, 0x7a, 0xa8, 0xff, 0x6b, 0x36, 0x59, 0x99, 0x48, 0x32, 0xc4, 0x23,
- 0x95, 0x6b, 0x63, 0xda, 0xca, 0x25, 0x3c, 0x8f, 0x97, 0xad, 0x20, 0x5b, 0xb6, 0xee, 0x5d, 0x4a,
- 0xd9, 0x92, 0xcb, 0x7c, 0xd3, 0x35, 0xeb, 0x2b, 0x0d, 0x2c, 0x8d, 0x1e, 0x2b, 0xf8, 0x24, 0x3e,
- 0xb2, 0x61, 0x56, 0x7f, 0x78, 0x7e, 0xd7, 0x61, 0x57, 0x36, 0x5e, 0x7c, 0x3e, 0xa1, 0x0b, 0xe6,
- 0x2d, 0x59, 0xb2, 0x55, 0x3a, 0x37, 0xa7, 0x59, 0x5b, 0xdc, 0xc5, 0x12, 0x77, 0xe1, 0x18, 0x29,
- 0x27, 0xf5, 0xdf, 0x2e, 0x81, 0x72, 0x3a, 0xe9, 0xf0, 0x3b, 0x60, 0xa1, 0x47, 0x28, 0xb3, 0x7d,
- 0x4f, 0xae, 0xb0, 0x68, 0x2e, 0xab, 0x99, 0x0b, 0x8f, 0x43, 0x31, 0x8a, 0xf4, 0xf0, 0x3a, 0x28,
- 0x50, 0xd2, 0x75, 0x6c, 0x0b, 0x33, 0x19, 0xec, 0x9c, 0x59, 0x16, 0xb7, 0x00, 0x29, 0x19, 0x8a,
- 0xb5, 0xf0, 0xf7, 0x1a, 0xa8, 0x58, 0xe3, 0xc5, 0x5f, 0x6d, 0x5e, 0x6b, 0x9a, 0x05, 0x66, 0x3a,
- 0x8a, 0xf9, 0xd6, 0x70, 0x50, 0xcb, 0x36, 0x1a, 0x94, 0x75, 0x0f, 0xff, 0xa2, 0x81, 0x2b, 0x94,
- 0x38, 0x3e, 0x3e, 0x20, 0x34, 0x33, 0x41, 0xcf, 0xbf, 0x8e, 0xe0, 0xae, 0x0e, 0x07, 0xb5, 0x2b,
- 0xe8, 0x2c, 0x9f, 0xe8, 0xec, 0x70, 0xe0, 0x9f, 0x35, 0xa0, 0xbb, 0x84, 0x53, 0xdb, 0x62, 0xd9,
- 0x58, 0xe7, 0x5e, 0x47, 0xac, 0xef, 0x0c, 0x07, 0x35, 0xbd, 0x75, 0x86, 0x4b, 0x74, 0x66, 0x30,
- 0xf0, 0x37, 0x1a, 0x28, 0x75, 0xc5, 0x09, 0x61, 0x9c, 0x78, 0x16, 0xd1, 0xe7, 0x65, 0x70, 0x0f,
- 0xa7, 0x09, 0x6e, 0x37, 0x81, 0x6b, 0x73, 0xc1, 0xd4, 0x3a, 0x7d, 0x73, 0x79, 0x38, 0xa8, 0x95,
- 0x52, 0x0a, 0x94, 0x76, 0x0a, 0xad, 0x54, 0x51, 0x5f, 0x90, 0x01, 0xfc, 0xe8, 0xc2, 0x17, 0xb5,
- 0xa5, 0x00, 0xc2, 0x53, 0x1d, 0x8d, 0x52, 0xb5, 0xfd, 0x0f, 0x1a, 0x28, 0x7b, 0xfe, 0x01, 0x69,
- 0x13, 0x87, 0x58, 0xdc, 0xa7, 0x7a, 0x41, 0xd6, 0xf8, 0x4f, 0x2f, 0xab, 0x00, 0x1a, 0x3b, 0x29,
- 0xf0, 0x4d, 0x8f, 0xd3, 0xbe, 0xb9, 0xa6, 0x2e, 0x63, 0x39, 0xad, 0x42, 0x23, 0x51, 0xc0, 0x47,
- 0xa0, 0xc4, 0x7d, 0x47, 0x30, 0x5a, 0xdb, 0xf7, 0x98, 0x5e, 0x94, 0x41, 0x55, 0x27, 0x11, 0x92,
- 0xbd, 0xd8, 0xcc, 0x5c, 0x55, 0xc0, 0xa5, 0x44, 0xc6, 0x50, 0x1a, 0x07, 0x92, 0x2c, 0xd7, 0x01,
- 0x32, 0xb3, 0xdf, 0x9e, 0x04, 0xbd, 0xeb, 0x1f, 0xbc, 0x12, 0xdd, 0x81, 0x1e, 0x58, 0x89, 0x59,
- 0x56, 0x9b, 0x58, 0x94, 0x70, 0xa6, 0x97, 0xe4, 0x12, 0x26, 0x12, 0xc3, 0x6d, 0xdf, 0xc2, 0x4e,
- 0x48, 0x64, 0x10, 0x39, 0x24, 0x54, 0xec, 0xbe, 0xa9, 0xab, 0xc5, 0xac, 0x6c, 0x8d, 0x21, 0xa1,
- 0x0c, 0x36, 0xbc, 0x0b, 0x2a, 0x5d, 0x6a, 0xfb, 0x32, 0x04, 0x07, 0x33, 0xb6, 0x83, 0x5d, 0xa2,
- 0x97, 0x65, 0xe5, 0xbb, 0xa2, 0x60, 0x2a, 0xbb, 0xe3, 0x06, 0x28, 0x3b, 0x47, 0x54, 0xc3, 0x48,
- 0xa8, 0x2f, 0x26, 0xd5, 0x30, 0x9a, 0x8b, 0x62, 0x2d, 0xfc, 0x18, 0x14, 0xf0, 0xe1, 0xa1, 0xed,
- 0x09, 0xcb, 0x25, 0x99, 0xc2, 0x77, 0x26, 0x2d, 0xad, 0xa9, 0x6c, 0x42, 0x9c, 0x68, 0x84, 0xe2,
- 0xb9, 0xf0, 0x3e, 0x80, 0x8c, 0xd0, 0x9e, 0x6d, 0x91, 0xa6, 0x65, 0xf9, 0x81, 0xc7, 0x65, 0xec,
- 0xcb, 0x32, 0xf6, 0x75, 0x15, 0x3b, 0x6c, 0x67, 0x2c, 0xd0, 0x84, 0x59, 0x22, 0x7a, 0x46, 0x38,
- 0xb7, 0xbd, 0x0e, 0xd3, 0x57, 0x24, 0x82, 0xf4, 0xda, 0x56, 0x32, 0x14, 0x6b, 0xe1, 0xfb, 0xa0,
- 0xc8, 0x38, 0xa6, 0xbc, 0x49, 0x3b, 0x4c, 0xaf, 0x5c, 0xcb, 0x5d, 0x2f, 0x86, 0x8d, 0xba, 0x1d,
- 0x09, 0x51, 0xa2, 0x87, 0x1f, 0x82, 0x32, 0x4b, 0x3d, 0x43, 0x74, 0x28, 0xa1, 0x57, 0xc4, 0x09,
- 0x4e, 0x3f, 0x4f, 0xd0, 0x88, 0x15, 0x34, 0x00, 0x70, 0xf1, 0xe9, 0x2e, 0xee, 0x8b, 0x6a, 0xa8,
- 0xaf, 0xca, 0x39, 0x4b, 0x82, 0xb1, 0xb6, 0x62, 0x29, 0x4a, 0x59, 0xac, 0xdf, 0x01, 0x95, 0xcc,
- 0x55, 0x81, 0x2b, 0x20, 0x77, 0x42, 0xfa, 0x61, 0x13, 0x43, 0xe2, 0x13, 0xae, 0x81, 0xb9, 0x1e,
- 0x76, 0x02, 0x12, 0xbe, 0x03, 0x50, 0x38, 0xb8, 0x3d, 0x7b, 0x4b, 0xab, 0xff, 0x43, 0x03, 0xcb,
- 0x63, 0x2f, 0x26, 0x78, 0x15, 0xe4, 0x02, 0xea, 0xa8, 0x26, 0x58, 0x52, 0xe9, 0xcc, 0x3d, 0x42,
- 0xdb, 0x48, 0xc8, 0xe1, 0xcf, 0x40, 0x19, 0x5b, 0x16, 0x61, 0x2c, 0x3c, 0x48, 0xaa, 0x5b, 0xbf,
- 0x77, 0x06, 0xef, 0xa7, 0x84, 0x3f, 0x20, 0xfd, 0x28, 0xc0, 0x30, 0x01, 0xcd, 0xd4, 0x74, 0x34,
- 0x02, 0x06, 0x6f, 0x8d, 0xa5, 0x2d, 0x27, 0x83, 0x88, 0x2f, 0xff, 0xd9, 0xa9, 0xab, 0xff, 0x35,
- 0x07, 0x0a, 0x11, 0xa3, 0x79, 0xd9, 0x12, 0xde, 0x05, 0x73, 0xdc, 0xef, 0xda, 0x96, 0x7a, 0x17,
- 0xc5, 0xac, 0x72, 0x4f, 0x08, 0x51, 0xa8, 0x4b, 0xf3, 0x81, 0xdc, 0x4b, 0xf8, 0xc0, 0x23, 0x90,
- 0xe3, 0x0e, 0x53, 0x9d, 0xf3, 0xf6, 0x85, 0xeb, 0xed, 0xde, 0x76, 0xf4, 0x38, 0x5e, 0x10, 0x61,
- 0xee, 0x6d, 0xb7, 0x91, 0xc0, 0x83, 0x9f, 0x80, 0x3c, 0xc3, 0xcc, 0x51, 0x5d, 0xee, 0xc7, 0x17,
- 0x27, 0x5c, 0xcd, 0xf6, 0x76, 0xfa, 0xd5, 0x2d, 0xc6, 0x48, 0x42, 0xc2, 0xdf, 0x69, 0x60, 0xd1,
- 0xf2, 0x3d, 0x16, 0xb8, 0x84, 0xde, 0xa5, 0x7e, 0xd0, 0x55, 0xdd, 0x6a, 0x67, 0x6a, 0x42, 0xb9,
- 0x91, 0x46, 0x35, 0x2b, 0xc3, 0x41, 0x6d, 0x71, 0x44, 0x84, 0x46, 0xfd, 0xd6, 0xff, 0xae, 0x01,
- 0x98, 0x9d, 0x08, 0x1b, 0xa0, 0xd8, 0x11, 0x1f, 0xf2, 0x66, 0x87, 0xfb, 0x18, 0xbf, 0x7a, 0xef,
- 0x46, 0x0a, 0x94, 0xd8, 0x88, 0x72, 0x46, 0xc9, 0x3e, 0x76, 0x70, 0xaa, 0x57, 0xaa, 0xfd, 0x8d,
- 0xcb, 0x19, 0x1a, 0x37, 0x40, 0xd9, 0x39, 0xf0, 0xfb, 0xa0, 0x24, 0xaf, 0xf1, 0x43, 0xe7, 0x80,
- 0xb0, 0xf0, 0x59, 0x5b, 0x48, 0xba, 0x44, 0x3b, 0x51, 0xa1, 0xb4, 0x5d, 0xfd, 0xbf, 0x1a, 0x58,
- 0x50, 0x8f, 0x05, 0xe8, 0x81, 0x79, 0x0f, 0x73, 0xbb, 0x47, 0x14, 0x57, 0x9e, 0xea, 0x79, 0xb7,
- 0x23, 0x91, 0xe2, 0xf6, 0x0f, 0x04, 0x97, 0x0d, 0x65, 0x48, 0x79, 0x81, 0xc7, 0x60, 0x9e, 0x9c,
- 0xfa, 0xdc, 0x8e, 0x1e, 0xaf, 0x97, 0xf5, 0x5b, 0x8d, 0xf4, 0xb5, 0x29, 0x91, 0x91, 0xf2, 0x50,
- 0xff, 0x5a, 0x03, 0x20, 0x31, 0x79, 0xd9, 0x4d, 0x7b, 0x1f, 0x14, 0x2d, 0x27, 0x60, 0x9c, 0xd0,
- 0xad, 0x8f, 0xa2, 0xdb, 0x26, 0xb6, 0x70, 0x23, 0x12, 0xa2, 0x44, 0x0f, 0x3f, 0x00, 0x79, 0x1c,
- 0xf0, 0x23, 0x75, 0xdd, 0x74, 0x71, 0x64, 0x9b, 0x01, 0x3f, 0x7a, 0x2e, 0x4a, 0x46, 0xc0, 0x8f,
- 0xe2, 0x4d, 0x93, 0x56, 0x99, 0x3a, 0x94, 0xbf, 0xc4, 0x3a, 0x54, 0xff, 0x7c, 0x19, 0x2c, 0x8d,
- 0x26, 0x1e, 0x7e, 0x90, 0x22, 0xfd, 0x9a, 0x6c, 0x73, 0xf1, 0xf3, 0x77, 0x02, 0xf1, 0x8f, 0xd6,
- 0x32, 0x7b, 0xae, 0xb5, 0x8c, 0x53, 0xc7, 0xdc, 0x9b, 0xa0, 0x8e, 0x93, 0xdf, 0x2a, 0xf9, 0x37,
- 0xfb, 0x56, 0xf9, 0xe6, 0xd0, 0xff, 0x3f, 0x8e, 0x93, 0xe2, 0x79, 0x49, 0xde, 0x3e, 0xbb, 0xbc,
- 0xbb, 0x7f, 0x39, 0xb4, 0x78, 0xe1, 0x92, 0x68, 0x71, 0xfa, 0xa5, 0x51, 0x78, 0x5d, 0x2f, 0x8d,
- 0x09, 0xdc, 0xbb, 0xf8, 0x1a, 0xb8, 0x77, 0x1d, 0xcc, 0xbb, 0xf8, 0xb4, 0xd9, 0x21, 0x92, 0xd9,
- 0x17, 0xc3, 0xc2, 0xd7, 0x92, 0x12, 0xa4, 0x34, 0xff, 0x77, 0x7e, 0x3e, 0x99, 0xe4, 0x96, 0x5f,
- 0x89, 0xe4, 0x4e, 0xe4, 0xfa, 0x8b, 0x53, 0x72, 0xfd, 0xa5, 0x73, 0x73, 0xfd, 0xe5, 0x29, 0xb8,
- 0xfe, 0x7b, 0x60, 0xc1, 0xc5, 0xa7, 0x2d, 0xa6, 0xe8, 0x79, 0xde, 0x2c, 0x09, 0x0a, 0xd6, 0x0a,
- 0x45, 0x28, 0xd2, 0x89, 0xc0, 0x5c, 0x7c, 0x6a, 0xf6, 0x39, 0x11, 0xdc, 0x3c, 0xa6, 0xf1, 0x2d,
- 0x25, 0x43, 0xb1, 0x56, 0x01, 0xb6, 0x83, 0x7d, 0x26, 0x49, 0x79, 0x02, 0x28, 0x44, 0x28, 0xd2,
- 0x5d, 0x94, 0x8a, 0xc3, 0x6d, 0xb0, 0x46, 0xf1, 0x21, 0xbf, 0x47, 0x30, 0xe5, 0xfb, 0x04, 0xf3,
- 0x3d, 0xdb, 0x25, 0x7e, 0xc0, 0xf5, 0xb5, 0xb8, 0x01, 0xac, 0xa1, 0x09, 0x7a, 0x34, 0x71, 0x16,
- 0xdc, 0x02, 0xab, 0x42, 0xbe, 0x29, 0xae, 0xb0, 0xed, 0x7b, 0x11, 0xd8, 0x5b, 0x12, 0xec, 0xed,
- 0xe1, 0xa0, 0xb6, 0x8a, 0xb2, 0x6a, 0x34, 0x69, 0x0e, 0xfc, 0x09, 0x58, 0x11, 0xe2, 0x6d, 0x82,
- 0x19, 0x89, 0x70, 0xbe, 0x15, 0xd2, 0x6a, 0x71, 0x12, 0xd1, 0x98, 0x0e, 0x65, 0xac, 0xe1, 0x06,
- 0xa8, 0x08, 0xd9, 0x86, 0xef, 0xba, 0x76, 0xbc, 0xae, 0xb7, 0x25, 0x84, 0x2c, 0xe4, 0x68, 0x5c,
- 0x89, 0xb2, 0xf6, 0xd3, 0x3f, 0x55, 0xfe, 0x34, 0x0b, 0x56, 0x27, 0x34, 0x35, 0xb1, 0x3e, 0xc6,
- 0x7d, 0x8a, 0x3b, 0x24, 0x39, 0xda, 0x5a, 0xb2, 0xbe, 0xf6, 0x98, 0x0e, 0x65, 0xac, 0xe1, 0x13,
- 0x00, 0xc2, 0xe6, 0xdf, 0xf2, 0x0f, 0x94, 0x63, 0xf3, 0x8e, 0xd8, 0xea, 0x66, 0x2c, 0x7d, 0x3e,
- 0xa8, 0xdd, 0x98, 0xf4, 0x17, 0x49, 0x14, 0x0f, 0x7f, 0xec, 0x3b, 0x81, 0x4b, 0x92, 0x09, 0x28,
- 0x05, 0x09, 0x7f, 0x0e, 0x40, 0x4f, 0xea, 0xdb, 0xf6, 0xaf, 0xa2, 0xe6, 0xfe, 0xc2, 0xdf, 0xda,
- 0x8d, 0xe8, 0xdf, 0x1c, 0xe3, 0xa7, 0x01, 0xf6, 0xb8, 0xb8, 0x1f, 0xf2, 0xec, 0x3d, 0x8e, 0x51,
- 0x50, 0x0a, 0xd1, 0x34, 0x9e, 0x3e, 0xab, 0xce, 0x7c, 0xf1, 0xac, 0x3a, 0xf3, 0xe5, 0xb3, 0xea,
- 0xcc, 0xaf, 0x87, 0x55, 0xed, 0xe9, 0xb0, 0xaa, 0x7d, 0x31, 0xac, 0x6a, 0x5f, 0x0e, 0xab, 0xda,
- 0x57, 0xc3, 0xaa, 0xf6, 0xf9, 0xd7, 0xd5, 0x99, 0x4f, 0x0b, 0x51, 0x5b, 0xf9, 0x5f, 0x00, 0x00,
- 0x00, 0xff, 0xff, 0xdf, 0x1b, 0x03, 0x56, 0xd9, 0x1d, 0x00, 0x00,
+ 0x75, 0x28, 0x1b, 0x48, 0x1a, 0xd4, 0x1d, 0xad, 0x46, 0xd4, 0x4a, 0xfb, 0x87, 0xdd, 0x99, 0x25,
+ 0xc4, 0x9e, 0x8a, 0xf6, 0x50, 0xa0, 0xa7, 0xa0, 0x28, 0x8a, 0x7e, 0x83, 0x02, 0xbd, 0xb7, 0xdf,
+ 0xa0, 0xa8, 0x0f, 0x3d, 0x04, 0xbd, 0x34, 0x87, 0x82, 0x88, 0x19, 0xf4, 0x4b, 0xf8, 0x54, 0xcc,
+ 0xec, 0xec, 0x1f, 0xee, 0x52, 0xb6, 0x64, 0xd2, 0x35, 0x7a, 0xdb, 0x79, 0xef, 0xcd, 0xef, 0xbd,
+ 0x37, 0x7f, 0xde, 0xfb, 0x0d, 0x09, 0xee, 0x77, 0x4d, 0x76, 0xec, 0x1f, 0x68, 0x86, 0x6b, 0x37,
+ 0xb1, 0xd7, 0x75, 0x7b, 0x9e, 0x7b, 0x22, 0x3e, 0x6e, 0x90, 0x3e, 0x71, 0x18, 0x6d, 0xf6, 0x4e,
+ 0xbb, 0x4d, 0xdc, 0x33, 0x69, 0x53, 0x8c, 0x0f, 0x7c, 0xda, 0xec, 0xdf, 0xc4, 0x56, 0xef, 0x18,
+ 0xdf, 0x6c, 0x76, 0x89, 0x43, 0x3c, 0xcc, 0xc8, 0xa1, 0xd6, 0xf3, 0x5c, 0xe6, 0xc2, 0xdb, 0x31,
+ 0x96, 0x16, 0x62, 0x89, 0x8f, 0x27, 0x01, 0x96, 0xd6, 0x3b, 0xed, 0x6a, 0x1c, 0x4b, 0x0b, 0xb1,
+ 0xb4, 0x10, 0x6b, 0xe3, 0xce, 0x85, 0xe3, 0x30, 0x5c, 0xdb, 0x76, 0x9d, 0xb4, 0xf3, 0x8d, 0x1b,
+ 0x09, 0x80, 0xae, 0xdb, 0x75, 0x9b, 0x42, 0x7c, 0xe0, 0x1f, 0x89, 0x91, 0x18, 0x88, 0x2f, 0x69,
+ 0xde, 0x38, 0xbd, 0x45, 0x35, 0xd3, 0xe5, 0x90, 0x4d, 0xc3, 0xf5, 0x48, 0xb3, 0x9f, 0xc9, 0x67,
+ 0xe3, 0xc3, 0xd8, 0xc6, 0xc6, 0xc6, 0xb1, 0xe9, 0x10, 0x6f, 0x10, 0xc6, 0xd1, 0xf4, 0x08, 0x75,
+ 0x7d, 0xcf, 0x20, 0x97, 0x9a, 0x45, 0x9b, 0x36, 0x61, 0x78, 0x92, 0xaf, 0xe6, 0x79, 0xb3, 0x3c,
+ 0xdf, 0x61, 0xa6, 0x9d, 0x75, 0xf3, 0xbd, 0x97, 0x4d, 0xa0, 0xc6, 0x31, 0xb1, 0x71, 0x7a, 0x5e,
+ 0xe3, 0x9f, 0xf3, 0xa0, 0xa8, 0xfb, 0x74, 0xd3, 0x75, 0x8e, 0xcc, 0x2e, 0x3c, 0x04, 0x79, 0x07,
+ 0x33, 0xaa, 0x2a, 0xd7, 0x94, 0xeb, 0xa5, 0xef, 0x7c, 0xac, 0xbd, 0xfa, 0x0e, 0x6a, 0xbb, 0xad,
+ 0xfd, 0x4e, 0x80, 0xaa, 0x17, 0x46, 0xc3, 0x7a, 0x9e, 0x8f, 0x91, 0x40, 0x87, 0x67, 0xa0, 0x78,
+ 0x42, 0x18, 0x65, 0x1e, 0xc1, 0xb6, 0x3a, 0x2f, 0x5c, 0x3d, 0x98, 0xc6, 0xd5, 0x7d, 0xc2, 0x3a,
+ 0x02, 0x4c, 0xfa, 0x5b, 0x1e, 0x0d, 0xeb, 0xc5, 0x48, 0x88, 0x62, 0x67, 0x90, 0x80, 0x85, 0x53,
+ 0x7c, 0x74, 0x8a, 0xd5, 0x9c, 0xf0, 0xfa, 0xd1, 0x34, 0x5e, 0x1f, 0x70, 0x20, 0xdd, 0xa7, 0x7a,
+ 0x71, 0x34, 0xac, 0x2f, 0x88, 0x11, 0x0a, 0xd0, 0x1b, 0x7f, 0x9d, 0x07, 0xd5, 0x4d, 0xd7, 0x61,
+ 0x98, 0x6f, 0xc3, 0x3e, 0xb1, 0x7b, 0x16, 0x66, 0x04, 0x7e, 0x02, 0x8a, 0xe1, 0x29, 0x09, 0x57,
+ 0xf8, 0xba, 0x16, 0x6c, 0x1b, 0xf7, 0xa1, 0xf1, 0x73, 0xa7, 0xf5, 0x6f, 0x6a, 0x48, 0x1a, 0x21,
+ 0xf2, 0x73, 0xdf, 0xf4, 0x88, 0xcd, 0x03, 0xd1, 0xab, 0x4f, 0x87, 0xf5, 0x39, 0x9e, 0x57, 0xa8,
+ 0xa5, 0x28, 0x46, 0x83, 0x07, 0xa0, 0x62, 0xda, 0xb8, 0x4b, 0xf6, 0x7c, 0xcb, 0xda, 0x73, 0x2d,
+ 0xd3, 0x18, 0x88, 0x75, 0x2d, 0xea, 0xb7, 0xe4, 0xb4, 0xca, 0xf6, 0xb8, 0xfa, 0xf9, 0xb0, 0x7e,
+ 0x35, 0x7b, 0xe4, 0xb5, 0xd8, 0x00, 0xa5, 0x01, 0xb9, 0x0f, 0x4a, 0x0c, 0xdf, 0x33, 0xd9, 0x80,
+ 0xe7, 0x46, 0xce, 0x98, 0x5c, 0xc5, 0x77, 0x27, 0x25, 0xd1, 0x19, 0x37, 0xd5, 0xd7, 0x78, 0x10,
+ 0x29, 0x21, 0x4a, 0x03, 0x36, 0xfe, 0x31, 0x0f, 0x0a, 0x5b, 0x7c, 0xa5, 0x75, 0x9f, 0xc2, 0x9f,
+ 0x81, 0x02, 0xbf, 0x1e, 0x87, 0x98, 0x61, 0xb9, 0x5c, 0xdf, 0x4e, 0x78, 0x8a, 0x4e, 0x79, 0xbc,
+ 0x47, 0xdc, 0x9a, 0xfb, 0x7e, 0x78, 0x70, 0x42, 0x0c, 0xd6, 0x26, 0x0c, 0xeb, 0x50, 0xe6, 0x0f,
+ 0x62, 0x19, 0x8a, 0x50, 0xe1, 0x09, 0xc8, 0xd3, 0x1e, 0x31, 0xe4, 0x19, 0xbc, 0x37, 0xcd, 0x69,
+ 0x08, 0xa3, 0xee, 0xf4, 0x88, 0xa1, 0x97, 0xa5, 0xd7, 0x3c, 0x1f, 0x21, 0xe1, 0x03, 0x7a, 0x60,
+ 0x91, 0x32, 0xcc, 0x7c, 0x2a, 0x57, 0xed, 0xfe, 0x4c, 0xbc, 0x09, 0x44, 0x7d, 0x45, 0xfa, 0x5b,
+ 0x0c, 0xc6, 0x48, 0x7a, 0x6a, 0xfc, 0x4b, 0x01, 0xe5, 0xd0, 0x74, 0xc7, 0xa4, 0x0c, 0x7e, 0x96,
+ 0x59, 0x52, 0xed, 0x62, 0x4b, 0xca, 0x67, 0x8b, 0x05, 0x5d, 0x95, 0xae, 0x0a, 0xa1, 0x24, 0xb1,
+ 0x9c, 0x26, 0x58, 0x30, 0x19, 0xb1, 0xa9, 0x3a, 0x7f, 0x2d, 0x37, 0xed, 0xed, 0x0a, 0xc3, 0xd6,
+ 0x97, 0xa5, 0xc3, 0x85, 0x6d, 0x0e, 0x8d, 0x02, 0x0f, 0x8d, 0x7f, 0xe7, 0xe2, 0xcc, 0xf8, 0x22,
+ 0x43, 0x3c, 0x56, 0xb9, 0x36, 0xa7, 0xad, 0x5c, 0xdc, 0x73, 0xba, 0x6c, 0xf9, 0xd9, 0xb2, 0x75,
+ 0x6f, 0x26, 0x65, 0x4b, 0xa4, 0xf9, 0x86, 0x6b, 0x16, 0xfc, 0xad, 0x02, 0x2a, 0x91, 0xd3, 0xad,
+ 0x33, 0x97, 0x99, 0x86, 0x9a, 0x9f, 0x7d, 0x6d, 0x16, 0x75, 0x20, 0x12, 0x06, 0x7e, 0x50, 0xda,
+ 0x71, 0xe3, 0x2b, 0x05, 0xac, 0x8c, 0x9f, 0x71, 0xf8, 0x24, 0xba, 0x3f, 0xc1, 0x16, 0x7f, 0xff,
+ 0xe2, 0x51, 0x05, 0x14, 0x41, 0x7b, 0xf1, 0x65, 0x81, 0x36, 0x58, 0x34, 0x44, 0x8c, 0x72, 0x6f,
+ 0xb7, 0xa6, 0x49, 0x3b, 0x6a, 0xa9, 0xb1, 0xbb, 0x60, 0x8c, 0xa4, 0x93, 0xc6, 0xaf, 0x57, 0x40,
+ 0x39, 0x79, 0x02, 0xe0, 0xb7, 0xc0, 0x52, 0x9f, 0x78, 0xd4, 0x74, 0x1d, 0x91, 0x61, 0x51, 0xaf,
+ 0xc8, 0x99, 0x4b, 0x8f, 0x03, 0x31, 0x0a, 0xf5, 0xf0, 0x3a, 0x28, 0x78, 0xa4, 0x67, 0x99, 0x06,
+ 0xa6, 0x22, 0xd8, 0x05, 0xbd, 0xcc, 0xaf, 0x24, 0x92, 0x32, 0x14, 0x69, 0xe1, 0xef, 0x14, 0x50,
+ 0x35, 0xd2, 0x9d, 0x48, 0x9e, 0xa4, 0xf6, 0x34, 0x09, 0x66, 0xda, 0x9b, 0xfe, 0xd6, 0x68, 0x58,
+ 0xcf, 0x76, 0x3d, 0x94, 0x75, 0x0f, 0xff, 0xac, 0x80, 0x2b, 0x1e, 0xb1, 0x5c, 0x7c, 0x48, 0xbc,
+ 0xcc, 0x04, 0x79, 0xe8, 0x66, 0x1c, 0xdc, 0xd5, 0xd1, 0xb0, 0x7e, 0x05, 0x9d, 0xe7, 0x13, 0x9d,
+ 0x1f, 0x0e, 0xfc, 0x93, 0x02, 0x54, 0x9b, 0x30, 0xcf, 0x34, 0x68, 0x36, 0xd6, 0x85, 0xd7, 0x11,
+ 0xeb, 0x3b, 0xa3, 0x61, 0x5d, 0x6d, 0x9f, 0xe3, 0x12, 0x9d, 0x1b, 0x0c, 0xfc, 0x95, 0x02, 0x4a,
+ 0x3d, 0x7e, 0x42, 0x28, 0x23, 0x8e, 0x41, 0xd4, 0x45, 0x11, 0xdc, 0xc3, 0x69, 0x82, 0xdb, 0x8b,
+ 0xe1, 0x3a, 0x8c, 0xd3, 0xc6, 0xee, 0x40, 0xaf, 0x8c, 0x86, 0xf5, 0x52, 0x42, 0x81, 0x92, 0x4e,
+ 0xa1, 0x91, 0xe8, 0x30, 0x4b, 0x22, 0x80, 0x1f, 0x5c, 0xfa, 0xa2, 0xb6, 0x25, 0x40, 0x70, 0xaa,
+ 0xc3, 0x51, 0xa2, 0xd1, 0xfc, 0x5e, 0x01, 0x65, 0xc7, 0x3d, 0x24, 0x1d, 0x62, 0x11, 0x83, 0xb9,
+ 0x9e, 0x5a, 0x10, 0x0d, 0xe7, 0xd3, 0x59, 0x55, 0x63, 0x6d, 0x37, 0x01, 0xbe, 0xe5, 0x30, 0x6f,
+ 0xa0, 0xaf, 0xcb, 0xcb, 0x58, 0x4e, 0xaa, 0xd0, 0x58, 0x14, 0xf0, 0x11, 0x28, 0x31, 0xd7, 0xe2,
+ 0xf4, 0xda, 0x74, 0x1d, 0xaa, 0x16, 0x45, 0x50, 0xb5, 0x49, 0xec, 0x68, 0x3f, 0x32, 0xd3, 0xd7,
+ 0x24, 0x70, 0x29, 0x96, 0x51, 0x94, 0xc4, 0x81, 0x24, 0x4b, 0xbc, 0x80, 0x58, 0xd9, 0x6f, 0x4e,
+ 0x82, 0xde, 0x73, 0x0f, 0x5f, 0x89, 0x7b, 0x41, 0x07, 0xac, 0x46, 0x94, 0xaf, 0x43, 0x0c, 0x8f,
+ 0x30, 0xaa, 0x96, 0x44, 0x0a, 0x13, 0x59, 0xea, 0x8e, 0x6b, 0x60, 0x2b, 0x60, 0x55, 0x88, 0x1c,
+ 0x11, 0x8f, 0xef, 0xbe, 0xae, 0xca, 0x64, 0x56, 0xb7, 0x53, 0x48, 0x28, 0x83, 0x0d, 0xef, 0x82,
+ 0x6a, 0xcf, 0x33, 0x5d, 0x11, 0x82, 0x85, 0x29, 0xdd, 0xc5, 0x36, 0x51, 0xcb, 0xa2, 0xf2, 0x5d,
+ 0x91, 0x30, 0xd5, 0xbd, 0xb4, 0x01, 0xca, 0xce, 0xe1, 0xd5, 0x30, 0x14, 0xaa, 0xcb, 0x71, 0x35,
+ 0x0c, 0xe7, 0xa2, 0x48, 0x0b, 0x3f, 0x06, 0x05, 0x7c, 0x74, 0x64, 0x3a, 0xdc, 0x72, 0x45, 0x2c,
+ 0xe1, 0x3b, 0x93, 0x52, 0x6b, 0x49, 0x9b, 0x00, 0x27, 0x1c, 0xa1, 0x68, 0x2e, 0xbc, 0x0f, 0x20,
+ 0x25, 0x5e, 0xdf, 0x34, 0x48, 0xcb, 0x30, 0x5c, 0xdf, 0x61, 0x22, 0xf6, 0x8a, 0x88, 0x7d, 0x43,
+ 0xc6, 0x0e, 0x3b, 0x19, 0x0b, 0x34, 0x61, 0x16, 0x8f, 0x9e, 0x12, 0xc6, 0x4c, 0xa7, 0x4b, 0xd5,
+ 0x55, 0x81, 0x20, 0xbc, 0x76, 0xa4, 0x0c, 0x45, 0x5a, 0xf8, 0x3e, 0x28, 0x52, 0x86, 0x3d, 0xd6,
+ 0xf2, 0xba, 0x54, 0xad, 0x5e, 0xcb, 0x5d, 0x2f, 0x06, 0xac, 0xa1, 0x13, 0x0a, 0x51, 0xac, 0x87,
+ 0x1f, 0x82, 0x32, 0x4d, 0xf4, 0x5d, 0x15, 0x0a, 0xe8, 0x55, 0x7e, 0x82, 0x93, 0xfd, 0x18, 0x8d,
+ 0x59, 0x41, 0x0d, 0x00, 0x1b, 0x9f, 0xed, 0xe1, 0x01, 0xaf, 0x86, 0xea, 0x9a, 0x98, 0xb3, 0xc2,
+ 0xe9, 0x73, 0x3b, 0x92, 0xa2, 0x84, 0xc5, 0xc6, 0x1d, 0x50, 0xcd, 0x5c, 0x15, 0xb8, 0x0a, 0x72,
+ 0xa7, 0x64, 0x10, 0x34, 0x31, 0xc4, 0x3f, 0xe1, 0x3a, 0x58, 0xe8, 0x63, 0xcb, 0x27, 0xc1, 0xa3,
+ 0x04, 0x05, 0x83, 0xdb, 0xf3, 0xb7, 0x94, 0xc6, 0xdf, 0x15, 0x50, 0x49, 0x51, 0x04, 0x78, 0x15,
+ 0xe4, 0x7c, 0xcf, 0x92, 0x4d, 0xb0, 0x24, 0x97, 0x33, 0xf7, 0x08, 0xed, 0x20, 0x2e, 0x87, 0x3f,
+ 0x01, 0x65, 0x6c, 0x18, 0x84, 0xd2, 0xe0, 0x20, 0xc9, 0x6e, 0xfd, 0xde, 0x39, 0x8f, 0x10, 0x8f,
+ 0xb0, 0x07, 0x64, 0x10, 0x06, 0x18, 0x2c, 0x40, 0x2b, 0x31, 0x1d, 0x8d, 0x81, 0xc1, 0x5b, 0xa9,
+ 0x65, 0xcb, 0x89, 0x20, 0xa2, 0xcb, 0x7f, 0xfe, 0xd2, 0x35, 0xfe, 0x92, 0x03, 0x85, 0x90, 0x5e,
+ 0xbd, 0x2c, 0x85, 0x77, 0xc1, 0x02, 0x73, 0x7b, 0xa6, 0x21, 0x1f, 0x69, 0x11, 0xc5, 0xdd, 0xe7,
+ 0x42, 0x14, 0xe8, 0x92, 0x7c, 0x20, 0xf7, 0x12, 0x3e, 0xf0, 0x08, 0xe4, 0x98, 0x45, 0x65, 0xe7,
+ 0xbc, 0x7d, 0xe9, 0x7a, 0xbb, 0xbf, 0x13, 0xbe, 0xd4, 0x97, 0x78, 0x98, 0xfb, 0x3b, 0x1d, 0xc4,
+ 0xf1, 0xe0, 0x27, 0x20, 0x4f, 0x31, 0xb5, 0x64, 0x97, 0xfb, 0xe1, 0xe5, 0x09, 0x57, 0xab, 0xb3,
+ 0x93, 0xfc, 0x09, 0x80, 0x8f, 0x91, 0x80, 0x84, 0xbf, 0x51, 0xc0, 0xb2, 0xe1, 0x3a, 0xd4, 0xb7,
+ 0x89, 0x77, 0xd7, 0x73, 0xfd, 0x9e, 0xec, 0x56, 0xbb, 0x53, 0xb3, 0xdb, 0xcd, 0x24, 0xaa, 0x5e,
+ 0x1d, 0x0d, 0xeb, 0xcb, 0x63, 0x22, 0x34, 0xee, 0xb7, 0xf1, 0x37, 0x05, 0xc0, 0xec, 0x44, 0xd8,
+ 0x04, 0xc5, 0x2e, 0xff, 0x10, 0x37, 0x3b, 0xd8, 0xc7, 0xe8, 0x09, 0x7e, 0x37, 0x54, 0xa0, 0xd8,
+ 0x86, 0x97, 0x33, 0x8f, 0x1c, 0x60, 0x0b, 0x27, 0x7a, 0xa5, 0xdc, 0xdf, 0xa8, 0x9c, 0xa1, 0xb4,
+ 0x01, 0xca, 0xce, 0x81, 0xdf, 0x05, 0x25, 0x71, 0x8d, 0x1f, 0x5a, 0x87, 0x84, 0x06, 0x6f, 0xec,
+ 0x42, 0xdc, 0x25, 0x3a, 0xb1, 0x0a, 0x25, 0xed, 0x1a, 0xff, 0x51, 0xc0, 0x92, 0x7c, 0xb9, 0x40,
+ 0x07, 0x2c, 0x3a, 0x98, 0x99, 0x7d, 0x22, 0xb9, 0xf2, 0x54, 0x6f, 0xcd, 0x5d, 0x81, 0x14, 0xb5,
+ 0x7f, 0xc0, 0xb9, 0x6c, 0x20, 0x43, 0xd2, 0x0b, 0x3c, 0x01, 0x8b, 0x24, 0x78, 0x31, 0xcc, 0xcf,
+ 0xf4, 0x87, 0x23, 0xe1, 0x4b, 0xbe, 0x11, 0xa4, 0x87, 0xc6, 0xd7, 0x0a, 0x00, 0xb1, 0xc9, 0xcb,
+ 0x6e, 0xda, 0xfb, 0xa0, 0x68, 0x58, 0x3e, 0x65, 0xc4, 0xdb, 0xfe, 0x28, 0xbc, 0x6d, 0x7c, 0x0b,
+ 0x37, 0x43, 0x21, 0x8a, 0xf5, 0xf0, 0x03, 0x90, 0xc7, 0x3e, 0x3b, 0x96, 0xd7, 0x4d, 0xe5, 0x47,
+ 0xb6, 0xe5, 0xb3, 0xe3, 0xe7, 0xbc, 0x64, 0xf8, 0xec, 0x38, 0xda, 0x34, 0x61, 0x95, 0xa9, 0x43,
+ 0xf9, 0x19, 0xd6, 0xa1, 0xc6, 0xe7, 0x15, 0xb0, 0x32, 0xbe, 0xf0, 0xf0, 0x83, 0x04, 0xe9, 0x57,
+ 0x44, 0x9b, 0x8b, 0xde, 0xe2, 0x13, 0x88, 0x7f, 0x98, 0xcb, 0xfc, 0x85, 0x72, 0x49, 0x53, 0xc7,
+ 0xdc, 0x9b, 0xa0, 0x8e, 0x93, 0xdf, 0x2a, 0xf9, 0x37, 0xfb, 0x56, 0xf9, 0xff, 0xa1, 0xff, 0x7f,
+ 0x48, 0x93, 0xe2, 0x45, 0x41, 0xde, 0x3e, 0x9b, 0xdd, 0xdd, 0x9f, 0x0d, 0x2d, 0x5e, 0x9a, 0x11,
+ 0x2d, 0x4e, 0xbe, 0x34, 0x0a, 0xaf, 0xeb, 0xa5, 0x31, 0x81, 0x7b, 0x17, 0x5f, 0x03, 0xf7, 0x6e,
+ 0x80, 0x45, 0x1b, 0x9f, 0xb5, 0xba, 0x44, 0x30, 0xfb, 0x62, 0x50, 0xf8, 0xda, 0x42, 0x82, 0xa4,
+ 0xe6, 0x7f, 0xce, 0xcf, 0x27, 0x93, 0xdc, 0xf2, 0x2b, 0x91, 0xdc, 0x89, 0x5c, 0x7f, 0x79, 0x4a,
+ 0xae, 0xbf, 0x72, 0x61, 0xae, 0x5f, 0x99, 0x82, 0xeb, 0xbf, 0x07, 0x96, 0x6c, 0x7c, 0xd6, 0xa6,
+ 0x92, 0x9e, 0xe7, 0xf5, 0x12, 0xa7, 0x60, 0xed, 0x40, 0x84, 0x42, 0x1d, 0x0f, 0xcc, 0xc6, 0x67,
+ 0xfa, 0x80, 0x11, 0xce, 0xcd, 0x23, 0x1a, 0xdf, 0x96, 0x32, 0x14, 0x69, 0x25, 0x60, 0xc7, 0x3f,
+ 0xa0, 0x82, 0x94, 0xc7, 0x80, 0x5c, 0x84, 0x42, 0xdd, 0x65, 0xa9, 0x38, 0xdc, 0x01, 0xeb, 0x1e,
+ 0x3e, 0x62, 0xf7, 0x08, 0xf6, 0xd8, 0x01, 0xc1, 0x6c, 0xdf, 0xb4, 0x89, 0xeb, 0x33, 0x75, 0x3d,
+ 0x6a, 0x00, 0xeb, 0x68, 0x82, 0x1e, 0x4d, 0x9c, 0x05, 0xb7, 0xc1, 0x1a, 0x97, 0x6f, 0xf1, 0x2b,
+ 0x6c, 0xba, 0x4e, 0x08, 0xf6, 0x96, 0x00, 0x7b, 0x7b, 0x34, 0xac, 0xaf, 0xa1, 0xac, 0x1a, 0x4d,
+ 0x9a, 0x03, 0x7f, 0x04, 0x56, 0xb9, 0x78, 0x87, 0x60, 0x4a, 0x42, 0x9c, 0x6f, 0x04, 0xb4, 0x9a,
+ 0x9f, 0x44, 0x94, 0xd2, 0xa1, 0x8c, 0x35, 0xdc, 0x04, 0x55, 0x2e, 0xdb, 0x74, 0x6d, 0xdb, 0x8c,
+ 0xf2, 0x7a, 0x5b, 0x40, 0x88, 0x42, 0x8e, 0xd2, 0x4a, 0x94, 0xb5, 0x9f, 0xfe, 0xa9, 0xf2, 0xc7,
+ 0x79, 0xb0, 0x36, 0xa1, 0xa9, 0xf1, 0xfc, 0x28, 0x73, 0x3d, 0xdc, 0x25, 0xf1, 0xd1, 0x56, 0xe2,
+ 0xfc, 0x3a, 0x29, 0x1d, 0xca, 0x58, 0xc3, 0x27, 0x00, 0x04, 0xcd, 0xbf, 0xed, 0x1e, 0x4a, 0xc7,
+ 0xfa, 0x1d, 0xbe, 0xd5, 0xad, 0x48, 0xfa, 0x7c, 0x58, 0xbf, 0x31, 0xe9, 0xff, 0x9a, 0x30, 0x1e,
+ 0xf6, 0xd8, 0xb5, 0x7c, 0x9b, 0xc4, 0x13, 0x50, 0x02, 0x12, 0xfe, 0x14, 0x80, 0xbe, 0xd0, 0x77,
+ 0xcc, 0x5f, 0x84, 0xcd, 0xfd, 0x85, 0x3f, 0xfc, 0x6b, 0xe1, 0x5f, 0x4b, 0xda, 0x8f, 0x7d, 0xec,
+ 0x30, 0x7e, 0x3f, 0xc4, 0xd9, 0x7b, 0x1c, 0xa1, 0xa0, 0x04, 0xa2, 0xae, 0x3d, 0x7d, 0x56, 0x9b,
+ 0xfb, 0xe2, 0x59, 0x6d, 0xee, 0xcb, 0x67, 0xb5, 0xb9, 0x5f, 0x8e, 0x6a, 0xca, 0xd3, 0x51, 0x4d,
+ 0xf9, 0x62, 0x54, 0x53, 0xbe, 0x1c, 0xd5, 0x94, 0xaf, 0x46, 0x35, 0xe5, 0xf3, 0xaf, 0x6b, 0x73,
+ 0x9f, 0x16, 0xc2, 0xb6, 0xf2, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe9, 0x55, 0xad, 0xa0, 0x66,
+ 0x1e, 0x00, 0x00,
}
func (m *BusConfig) Marshal() (dAtA []byte, err error) {
@@ -822,6 +824,18 @@ func (m *EventBusSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
_ = i
var l int
_ = l
+ if m.JetStreamExotic != nil {
+ {
+ size, err := m.JetStreamExotic.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintGenerated(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
if m.Kafka != nil {
{
size, err := m.Kafka.MarshalToSizedBuffer(dAtA[:i])
@@ -1782,6 +1796,10 @@ func (m *EventBusSpec) Size() (n int) {
l = m.Kafka.Size()
n += 1 + l + sovGenerated(uint64(l))
}
+ if m.JetStreamExotic != nil {
+ l = m.JetStreamExotic.Size()
+ n += 1 + l + sovGenerated(uint64(l))
+ }
return n
}
@@ -2169,6 +2187,7 @@ func (this *EventBusSpec) String() string {
`NATS:` + strings.Replace(this.NATS.String(), "NATSBus", "NATSBus", 1) + `,`,
`JetStream:` + strings.Replace(this.JetStream.String(), "JetStreamBus", "JetStreamBus", 1) + `,`,
`Kafka:` + strings.Replace(this.Kafka.String(), "KafkaBus", "KafkaBus", 1) + `,`,
+ `JetStreamExotic:` + strings.Replace(this.JetStreamExotic.String(), "JetStreamConfig", "JetStreamConfig", 1) + `,`,
`}`,
}, "")
return s
@@ -3079,6 +3098,42 @@ func (m *EventBusSpec) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field JetStreamExotic", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowGenerated
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthGenerated
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.JetStreamExotic == nil {
+ m.JetStreamExotic = &JetStreamConfig{}
+ }
+ if err := m.JetStreamExotic.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipGenerated(dAtA[iNdEx:])
diff --git a/pkg/apis/eventbus/v1alpha1/generated.proto b/pkg/apis/eventbus/v1alpha1/generated.proto
index 7320044cca..e03b4841a2 100644
--- a/pkg/apis/eventbus/v1alpha1/generated.proto
+++ b/pkg/apis/eventbus/v1alpha1/generated.proto
@@ -86,6 +86,10 @@ message EventBusSpec {
// +optional
// Kafka eventbus
optional KafkaBus kafka = 3;
+
+ // Exotic JetStream
+ // +optional
+ optional JetStreamConfig jetstreamExotic = 4;
}
// EventBusStatus holds the status of the eventbus resource
diff --git a/pkg/apis/eventbus/v1alpha1/openapi_generated.go b/pkg/apis/eventbus/v1alpha1/openapi_generated.go
index cb16259563..48babcac71 100644
--- a/pkg/apis/eventbus/v1alpha1/openapi_generated.go
+++ b/pkg/apis/eventbus/v1alpha1/openapi_generated.go
@@ -230,11 +230,17 @@ func schema_pkg_apis_eventbus_v1alpha1_EventBusSpec(ref common.ReferenceCallback
Ref: ref("github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1.KafkaBus"),
},
},
+ "jetstreamExotic": {
+ SchemaProps: spec.SchemaProps{
+ Description: "Exotic JetStream",
+ Ref: ref("github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1.JetStreamConfig"),
+ },
+ },
},
},
},
Dependencies: []string{
- "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1.JetStreamBus", "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1.KafkaBus", "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1.NATSBus"},
+ "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1.JetStreamBus", "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1.JetStreamConfig", "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1.KafkaBus", "github.com/argoproj/argo-events/pkg/apis/eventbus/v1alpha1.NATSBus"},
}
}
diff --git a/pkg/apis/eventbus/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/eventbus/v1alpha1/zz_generated.deepcopy.go
index 61ce1b4ca9..c013460cb9 100644
--- a/pkg/apis/eventbus/v1alpha1/zz_generated.deepcopy.go
+++ b/pkg/apis/eventbus/v1alpha1/zz_generated.deepcopy.go
@@ -159,6 +159,11 @@ func (in *EventBusSpec) DeepCopyInto(out *EventBusSpec) {
*out = new(KafkaBus)
(*in).DeepCopyInto(*out)
}
+ if in.JetStreamExotic != nil {
+ in, out := &in.JetStreamExotic, &out.JetStreamExotic
+ *out = new(JetStreamConfig)
+ (*in).DeepCopyInto(*out)
+ }
return
}
diff --git a/webhook/validator/eventbus.go b/webhook/validator/eventbus.go
index d950fe57f7..ee5fce4821 100644
--- a/webhook/validator/eventbus.go
+++ b/webhook/validator/eventbus.go
@@ -79,6 +79,10 @@ func (eb *eventbus) ValidateUpdate(ctx context.Context) *admissionv1.AdmissionRe
if oldJs.StreamConfig != nil && newJs.StreamConfig != nil && *oldJs.StreamConfig != *newJs.StreamConfig {
return DeniedResponse("\"spec.jetstream.streamConfig\" is immutable, can not be updated, old value='%s', new value='%s'", *oldJs.StreamConfig, *newJs.StreamConfig)
}
+ case eb.neweb.Spec.JetStreamExotic != nil:
+ if eb.oldeb.Spec.JetStreamExotic == nil {
+ return DeniedResponse("Can not change event bus implementation")
+ }
}
return AllowedResponse()
diff --git a/webhook/validator/eventbus_test.go b/webhook/validator/eventbus_test.go
index 5934dc5e71..91203aa25d 100644
--- a/webhook/validator/eventbus_test.go
+++ b/webhook/validator/eventbus_test.go
@@ -50,4 +50,16 @@ func TestValidateEventBusUpdate(t *testing.T) {
r := v.ValidateUpdate(contextWithLogger(t))
assert.False(t, r.Allowed)
})
+
+ t.Run("test update native nats to exotic js", func(t *testing.T) {
+ newEb := eb.DeepCopy()
+ newEb.Generation++
+ newEb.Spec.NATS = nil
+ newEb.Spec.JetStreamExotic = &eventbusv1alpha1.JetStreamConfig{
+ URL: "nats://nats:4222",
+ }
+ v := NewEventBusValidator(fakeK8sClient, fakeEventBusClient, fakeEventSourceClient, fakeSensorClient, eb, newEb)
+ r := v.ValidateUpdate(contextWithLogger(t))
+ assert.False(t, r.Allowed)
+ })
}