Repository: kubevela/kubevela

Issue:
[Deprecation] `helm`/`kube`/`terraform` schematic in ComponentDefinition
### Introduction

We have four ComponentDefinition schematics defined, which are `helm`/`kube`/`terraform`/`CUE`. The three schematics other than `CUE` now have some shortcomings and are able to be unified to `CUE`. This issue propose to deprecated `helm`/`kube`/`terraform` schematic in ComponentDefinition.

### Limitations

1. Both the `helm`/`kube`/`terraform` introduce some hard coded logic to render resources in vela core. With `CUE` schematic these rendering logic will be eliminated and move to definition layer.
2. From v1.2, many useful Application features is built on `CUE` schematic based ComponentDefinition. And not it's hard to align for other types. For example data passing between components is totally based on CUE.

### Functionality and Replacement
- `helm` schematic is built for delivery Helm Chart. This capability has beed separated to fluxcd Addon. In this addon, `helm` type ComponentDefinition is built by `CUE` schematic.
- `kube` is buit for delivery Kubernetes objects. This capability has been implemented by built-in `k8s-objects` type ComponentDefinition. 
- `terraform` is built for delivery [terraform-controller](https://github.com/kubevela/terraform-controller) Configuration. This need some extra work to migrate to `CUE` schematic.

Discussion:
@wonderflow: Before start, we need a proposal about how to achieve this and keep the compatiblity. The compatiblity to end user which means let the application yaml related still work, is very important.@briankane: This issue has been inactive for over 2 years and is scheduled for closure as part of our backlog maintenance.

  **If this issue is still relevant:**
  - Please comment below to keep it open
  - Provide updated context if the original description is outdated

  **Timeline:** If there's no activity by **Friday, October 24th**, this issue will be automatically closed.

  **Note:** Issues can always be reopened if they become relevant again. We encourage the community to reopen and reprioritize any incorrectly 
  closed issues.@briankane: This issue has been closed following the stale issue notice. 

If this issue is still relevant and should remain open, please:
1. Reopen the issue
2. Remove the 'stale' label
3. Provide an update on the current status or importance

Thank you for your understanding and contribution to KubeVela!

Solution patch:
diff --git a/apis/core.oam.dev/common/types.go b/apis/core.oam.dev/common/types.go
index d31d016f..6b190ca9 100644
--- a/apis/core.oam.dev/common/types.go
+++ b/apis/core.oam.dev/common/types.go
@@ -32,16 +32,6 @@ import (
 	"github.com/oam-dev/kubevela/pkg/oam"
 )
 
-// Kube defines the encapsulation in raw Kubernetes resource format
-type Kube struct {
-	// Template defines the raw Kubernetes resource
-	// +kubebuilder:pruning:PreserveUnknownFields
-	Template runtime.RawExtension `json:"template"`
-
-	// Parameters defines configurable parameters
-	Parameters []KubeParameter `json:"parameters,omitempty"`
-}
-
 // ParameterValueType refers to a data type of parameter
 type ParameterValueType string
 
@@ -52,31 +42,6 @@ const (
 	BooleanType ParameterValueType = "boolean"
 )
 
-// A KubeParameter defines a configurable parameter of a component.
-type KubeParameter struct {
-	// Name of this parameter
-	Name string `json:"name"`
-
-	// +kubebuilder:validation:Enum:=string;number;boolean
-	// ValueType indicates the type of the parameter value, and
-	// only supports basic data types: string, number, boolean.
-	ValueType ParameterValueType `json:"type"`
-
-	// FieldPaths specifies an array of fields within this workload that will be
-	// overwritten by the value of this parameter. 	All fields must be of the
-	// same type. Fields are specified as JSON field paths without a leading
-	// dot, for example 'spec.replicas'.
-	FieldPaths []string `json:"fieldPaths"`
-
-	// +kubebuilder:default:=false
-	// Required specifies whether or not a value for this parameter must be
-	// supplied when authoring an Application.
-	Required *bool `json:"required,omitempty"`
-
-	// Description of this parameter.
-	Description *string `json:"description,omitempty"`
-}
-
 // CUE defines the encapsulation in CUE format
 type CUE struct {
 	// Template defines the abstraction template data of the capability, it will replace the old CUE template in extension field.
@@ -87,26 +52,11 @@ type CUE struct {
 // Schematic defines the encapsulation of this capability(workload/trait/scope),
 // the encapsulation can be defined in different ways, e.g. CUE/HCL(terraform)/KUBE(K8s Object)/HELM, etc...
 type Schematic struct {
-	KUBE *Kube `json:"kube,omitempty"`
-
 	CUE *CUE `json:"cue,omitempty"`
 
-	HELM *Helm `json:"helm,omitempty"`
-
 	Terraform *Terraform `json:"terraform,omitempty"`
 }
 
-// A Helm represents resources used by a Helm module
-type Helm struct {
-	// Release records a Helm release used by a Helm module workload.
-	// +kubebuilder:pruning:PreserveUnknownFields
-	Release runtime.RawExtension `json:"release"`
-
-	// HelmRelease records a Helm repository used by a Helm module workload.
-	// +kubebuilder:pruning:PreserveUnknownFields
-	Repository runtime.RawExtension `json:"repository"`
-}
-
 // Terraform is the struct to describe cloud resources managed by Hashicorp Terraform
 type Terraform struct {
 	// Configuration is Terraform Configuration
@@ -213,26 +163,6 @@ const (
 	ApplicationDeleting ApplicationPhase = "deleting"
 )
 
-// WorkflowState is a string that mark the workflow state
-type WorkflowState string
-
-const (
-	// WorkflowStateInitializing means the workflow is in initial state
-	WorkflowStateInitializing WorkflowState = "Initializing"
-	// WorkflowStateTerminated means workflow is terminated manually, and it won't be started unless the spec changed.
-	WorkflowStateTerminated WorkflowState = "Terminated"
-	// WorkflowStateSuspended means workflow is suspended manually, and it can be resumed.
-	WorkflowStateSuspended WorkflowState = "Suspended"
-	// WorkflowStateSucceeded means workflow is running successfully, all steps finished.
-	WorkflowStateSucceeded WorkflowState = "Succeeded"
-	// WorkflowStateFinished means workflow is end.
-	WorkflowStateFinished WorkflowState = "Finished"
-	// WorkflowStateExecuting means workflow is still running or waiting some steps.
-	WorkflowStateExecuting WorkflowState = "Executing"
-	// WorkflowStateSkipping means it will skip this reconcile and let next reconcile to handle it.
-	WorkflowStateSkipping WorkflowState = "Skipping"
-)
-
 // ApplicationComponentStatus record the health status of App component
 type ApplicationComponentStatus struct {
 	Name      string `json:"name"`
@@ -269,13 +199,6 @@ type Revision struct {
 	RevisionHash string `json:"revisionHash,omitempty"`
 }
 
-// RawComponent record raw component
-type RawComponent struct {
-	// +kubebuilder:validation:EmbeddedResource
-	// +kubebuilder:pruning:PreserveUnknownFields
-	Raw runtime.RawExtension `json:"raw"`
-}
-
 // AppStatus defines the observed state of Application
 type AppStatus struct {
 	// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
diff --git a/apis/core.oam.dev/common/zz_generated.deepcopy.go b/apis/core.oam.dev/common/zz_generated.deepcopy.go
index fe85551b..8b2ed6c6 100644
--- a/apis/core.oam.dev/common/zz_generated.deepcopy.go
+++ b/apis/core.oam.dev/common/zz_generated.deepcopy.go
@@ -278,76 +278,6 @@ func (in *DefinitionReference) DeepCopy() *DefinitionReference {
 	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Helm) DeepCopyInto(out *Helm) {
-	*out = *in
-	in.Release.DeepCopyInto(&out.Release)
-	in.Repository.DeepCopyInto(&out.Repository)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Helm.
-func (in *Helm) DeepCopy() *Helm {
-	if in == nil {
-		return nil
-	}
-	out := new(Helm)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *Kube) DeepCopyInto(out *Kube) {
-	*out = *in
-	in.Template.DeepCopyInto(&out.Template)
-	if in.Parameters != nil {
-		in, out := &in.Parameters, &out.Parameters
-		*out = make([]KubeParameter, len(*in))
-		for i := range *in {
-			(*in)[i].DeepCopyInto(&(*out)[i])
-		}
-	}
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Kube.
-func (in *Kube) DeepCopy() *Kube {
-	if in == nil {
-		return nil
-	}
-	out := new(Kube)
-	in.DeepCopyInto(out)
-	return out
-}
-
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *KubeParameter) DeepCopyInto(out *KubeParameter) {
-	*out = *in
-	if in.FieldPaths != nil {
-		in, out := &in.FieldPaths, &out.FieldPaths
-		*out = make([]string, len(*in))
-		copy(*out, *in)
-	}
-	if in.Required != nil {
-		in, out := &in.Required, &out.Required
-		*out = new(bool)
-		**out = **in
-	}
-	if in.Description != nil {
-		in, out := &in.Description, &out.Description
-		*out = new(string)
-		**out = **in
-	}
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeParameter.
-func (in *KubeParameter) DeepCopy() *KubeParameter {
-	if in == nil {
-		return nil
-	}
-	out := new(KubeParameter)
-	in.DeepCopyInto(out)
-	return out
-}
-
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *OAMObjectReference) DeepCopyInto(out *OAMObjectReference) {
 	*out = *in
@@ -383,22 +313,6 @@ func (in *PolicyStatus) DeepCopy() *PolicyStatus {
 	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *RawComponent) DeepCopyInto(out *RawComponent) {
-	*out = *in
-	in.Raw.DeepCopyInto(&out.Raw)
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RawComponent.
-func (in *RawComponent) DeepCopy() *RawComponent {
-	if in == nil {
-		return nil
-	}
-	out := new(RawComponent)
-	in.DeepCopyInto(out)
-	return out
-}
-
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *RawExtensionPointer) DeepCopyInto(out *RawExtensionPointer) {
 	*out = *in
@@ -475,21 +389,11 @@ func (in *Revision) DeepCopy() *Revision {
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *Schematic) DeepCopyInto(out *Schematic) {
 	*out = *in
-	if in.KUBE != nil {
-		in, out := &in.KUBE, &out.KUBE
-		*out = new(Kube)
-		(*in).DeepCopyInto(*out)
-	}
 	if in.CUE != nil {
 		in, out := &in.CUE, &out.CUE
 		*out = new(CUE)
 		**out = **in
 	}
-	if in.HELM != nil {
-		in, out := &in.HELM, &out.HELM
-		*out = new(Helm)
-		(*in).DeepCopyInto(*out)
-	}
 	if in.Terraform != nil {
 		in, out := &in.Terraform, &out.Terraform
 		*out = new(Terraform)
diff --git a/apis/core.oam.dev/v1beta1/resourcetracker_types.go b/apis/core.oam.dev/v1beta1/resourcetracker_types.go
index 1edd0dbd..92d74113 100644
--- a/apis/core.oam.dev/v1beta1/resourcetracker_types.go
+++ b/apis/core.oam.dev/v1beta1/resourcetracker_types.go
@@ -32,7 +32,6 @@ import (
 	"github.com/kubevela/pkg/util/compression"
 
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
-	"github.com/oam-dev/kubevela/apis/interfaces"
 	velatypes "github.com/oam-dev/kubevela/apis/types"
 	"github.com/oam-dev/kubevela/pkg/oam"
 	velaerr "github.com/oam-dev/kubevela/pkg/utils/errors"
@@ -53,8 +52,7 @@ type ResourceTracker struct {
 	metav1.TypeMeta   `json:",inline"`
 	metav1.ObjectMeta `json:"metadata,omitempty"`
 
-	Spec   ResourceTrackerSpec   `json:"spec,omitempty"`
-	Status ResourceTrackerStatus `json:"status,omitempty"`
+	Spec ResourceTrackerSpec `json:"spec,omitempty"`
 }
 
 // ResourceTrackerType defines the type of resourceTracker
@@ -140,7 +138,7 @@ type ManagedResource struct {
 }
 
 // Equal check if two managed resource equals
-func (in ManagedResource) Equal(r ManagedResource) bool {
+func (in *ManagedResource) Equal(r ManagedResource) bool {
 	if !in.ClusterObjectReference.Equal(r.ClusterObjectReference) {
 		return false
 	}
@@ -151,7 +149,7 @@ func (in ManagedResource) Equal(r ManagedResource) bool {
 }
 
 // DisplayName readable name for locating resource
-func (in ManagedResource) DisplayName() string {
+func (in *ManagedResource) DisplayName() string {
 	s := in.Kind + " " + in.Name
 	if in.Namespace != "" || in.Cluster != "" {
 		s += " ("
@@ -170,12 +168,12 @@ func (in ManagedResource) DisplayName() string {
 }
 
 // NamespacedName namespacedName
-func (in ManagedResource) NamespacedName() types.NamespacedName {
+func (in *ManagedResource) NamespacedName() types.NamespacedName {
 	return types.NamespacedName{Namespace: in.Namespace, Name: in.Name}
 }
 
 // ResourceKey computes the key for managed resource, resources with the same key points to the same resource
-func (in ManagedResource) ResourceKey() string {
+func (in *ManagedResource) ResourceKey() string {
 	group := in.GroupVersionKind().Group
 	kind := in.GroupVersionKind().Kind
 	cluster := in.Cluster
@@ -186,12 +184,12 @@ func (in ManagedResource) ResourceKey() string {
 }
 
 // ComponentKey computes the key for the component which managed resource belongs to
-func (in ManagedResource) ComponentKey() string {
+func (in *ManagedResource) ComponentKey() string {
 	return strings.Join([]string{in.Env, in.Component}, "/")
 }
 
 // UnmarshalTo unmarshal ManagedResource into target object
-func (in ManagedResource) UnmarshalTo(obj interface{}) error {
+func (in *ManagedResource) UnmarshalTo(obj interface{}) error {
 	if in.Data == nil || in.Data.Raw == nil {
 		return velaerr.ManagedResourceHasNoDataError{}
 	}
@@ -199,7 +197,7 @@ func (in ManagedResource) UnmarshalTo(obj interface{}) error {
 }
 
 // ToUnstructured converts managed resource into unstructured
-func (in ManagedResource) ToUnstructured() *unstructured.Unstructured {
+func (in *ManagedResource) ToUnstructured() *unstructured.Unstructured {
 	obj := &unstructured.Unstructured{}
 	obj.SetGroupVersionKind(in.GroupVersionKind())
 	obj.SetName(in.Name)
@@ -211,7 +209,7 @@ func (in ManagedResource) ToUnstructured() *unstructured.Unstructured {
 }
 
 // ToUnstructuredWithData converts managed resource into unstructured and unmarshal data
-func (in ManagedResource) ToUnstructuredWithData() (*unstructured.Unstructured, error) {
+func (in *ManagedResource) ToUnstructuredWithData() (*unstructured.Unstructured, error) {
 	obj := in.ToUnstructured()
 	if err := in.UnmarshalTo(obj); err != nil {
 		if errors.Is(err, velaerr.ManagedResourceHasNoDataError{}) {
@@ -221,13 +219,6 @@ func (in ManagedResource) ToUnstructuredWithData() (*unstructured.Unstructured,
 	return obj, nil
 }
 
-// ResourceTrackerStatus define the status of resourceTracker
-// For backward-compatibility
-type ResourceTrackerStatus struct {
-	// Deprecated
-	TrackedResources []common.ClusterObjectReference `json:"trackedResources,omitempty"`
-}
-
 // +kubebuilder:object:root=true
 // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
 
@@ -325,29 +316,3 @@ func (in *ResourceTracker) DeleteManagedResource(rsc client.Object, remove bool)
 	}
 	return true
 }
-
-// addClusterObjectReference
-// Deprecated
-func (in *ResourceTracker) addClusterObjectReference(ref common.ClusterObjectReference) bool {
-	for _, _rsc := range in.Status.TrackedResources {
-		if _rsc.Equal(ref) {
-			return true
-		}
-	}
-	in.Status.TrackedResources = append(in.Status.TrackedResources, ref)
-	return false
-}
-
-// AddTrackedResource add new object reference into tracked resources, return if already exists
-// Deprecated
-func (in *ResourceTracker) AddTrackedResource(rsc interfaces.TrackableResource) bool {
-	return in.addClusterObjectReference(common.ClusterObjectReference{
-		ObjectReference: corev1.ObjectReference{
-			APIVersion: rsc.GetAPIVersion(),
-			Kind:       rsc.GetKind(),
-			Name:       rsc.GetName(),
-			Namespace:  rsc.GetNamespace(),
-			UID:        rsc.GetUID(),
-		},
-	})
-}
diff --git a/apis/core.oam.dev/v1beta1/zz_generated.deepcopy.go b/apis/core.oam.dev/v1beta1/zz_generated.deepcopy.go
index 4cebf321..79757e8a 100644
--- a/apis/core.oam.dev/v1beta1/zz_generated.deepcopy.go
+++ b/apis/core.oam.dev/v1beta1/zz_generated.deepcopy.go
@@ -679,7 +679,6 @@ func (in *ResourceTracker) DeepCopyInto(out *ResourceTracker) {
 	out.TypeMeta = in.TypeMeta
 	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
 	in.Spec.DeepCopyInto(&out.Spec)
-	in.Status.DeepCopyInto(&out.Status)
 }
 
 // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceTracker.
@@ -771,26 +770,6 @@ func (in *ResourceTrackerSpec) DeepCopy() *ResourceTrackerSpec {
 	return out
 }
 
-// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
-func (in *ResourceTrackerStatus) DeepCopyInto(out *ResourceTrackerStatus) {
-	*out = *in
-	if in.TrackedResources != nil {
-		in, out := &in.TrackedResources, &out.TrackedResources
-		*out = make([]common.ClusterObjectReference, len(*in))
-		copy(*out, *in)
-	}
-}
-
-// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceTrackerStatus.
-func (in *ResourceTrackerStatus) DeepCopy() *ResourceTrackerStatus {
-	if in == nil {
-		return nil
-	}
-	out := new(ResourceTrackerStatus)
-	in.DeepCopyInto(out)
-	return out
-}
-
 // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
 func (in *TraitDefinition) DeepCopyInto(out *TraitDefinition) {
 	*out = *in
diff --git a/apis/interfaces/resourcetracker.go b/apis/interfaces/resourcetracker.go
deleted file mode 100644
index 9cf29a45..00000000
--- a/apis/interfaces/resourcetracker.go
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package interfaces
-
-import (
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"sigs.k8s.io/controller-runtime/pkg/client"
-)
-
-// ObjectOwner is the interface for get and set ownerReference
-type ObjectOwner interface {
-	GetOwnerReferences() []metav1.OwnerReference
-	SetOwnerReferences([]metav1.OwnerReference)
-}
-
-// TrackableResource is the interface for resources to be tracked by resourcetracker
-type TrackableResource interface {
-	client.Object
-	metav1.Type
-	ObjectOwner
-}
diff --git a/apis/types/capability.go b/apis/types/capability.go
index 993254da..92703253 100644
--- a/apis/types/capability.go
+++ b/apis/types/capability.go
@@ -17,13 +17,7 @@ limitations under the License.
 package types
 
 import (
-	"encoding/json"
-
 	"cuelang.org/go/cue"
-	"github.com/spf13/pflag"
-	"k8s.io/apimachinery/pkg/runtime"
-
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
 )
 
 // Source record the source of Capability
@@ -89,10 +83,6 @@ type CapabilityCategory string
 const (
 	TerraformCategory CapabilityCategory = "terraform"
 
-	HelmCategory CapabilityCategory = "helm"
-
-	KubeCategory CapabilityCategory = "kube"
-
 	CUECategory CapabilityCategory = "cue"
 )
 
@@ -109,49 +99,6 @@ type Parameter struct {
 	JSONType string      `json:"jsonType,omitempty"`
 }
 
-// SetFlagBy set cli flag from Parameter
-func SetFlagBy(flags *pflag.FlagSet, v Parameter) {
-	name := v.Name
-	if v.Alias != "" {
-		name = v.Alias
-	}
-	// nolint:exhaustive
-	switch v.Type {
-	case cue.IntKind:
-		var vv int64
-		switch val := v.Default.(type) {
-		case int64:
-			vv = val
-		case json.Number:
-			vv, _ = val.Int64()
-		case int:
-			vv = int64(val)
-		case float64:
-			vv = int64(val)
-		}
-		flags.Int64P(name, v.Short, vv, v.Usage)
-	case cue.StringKind:
-		flags.StringP(name, v.Short, v.Default.(string), v.Usage)
-	case cue.BoolKind:
-		flags.BoolP(name, v.Short, v.Default.(bool), v.Usage)
-	case cue.NumberKind, cue.FloatKind:
-		var vv float64
-		switch val := v.Default.(type) {
-		case int64:
-			vv = float64(val)
-		case json.Number:
-			vv, _ = val.Float64()
-		case int:
-			vv = float64(val)
-		case float64:
-			vv = val
-		}
-		flags.Float64P(name, v.Short, vv, v.Usage)
-	default:
-		// other types not supported yet
-	}
-}
-
 // Capability defines the content of a capability
 type Capability struct {
 	Name           string             `json:"name"`
@@ -181,8 +128,4 @@ type Capability struct {
 	TerraformConfiguration string `json:"terraformConfiguration,omitempty"`
 	ConfigurationType      string `json:"configurationType,omitempty"`
 	Path                   string `json:"path,omitempty"`
-
-	// KubeTemplate
-	KubeTemplate  runtime.RawExtension   `json:"kubetemplate,omitempty"`
-	KubeParameter []common.KubeParameter `json:"kubeparameter,omitempty"`
 }
diff --git a/apis/types/workflow.go b/apis/types/workflow.go
deleted file mode 100644
index 4d806f4b..00000000
--- a/apis/types/workflow.go
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package types
-
-import (
-	corev1 "k8s.io/api/core/v1"
-)
-
-// WorkflowContext is the workflow context to pass into workflow objects.
-type WorkflowContext struct {
-	AppName           string                      `json:"appName,omitempty"`
-	AppRevision       string                      `json:"appRevision,omitempty"`
-	WorkflowIndex     int                         `json:"workflowIndex"`
-	ResourceConfigMap corev1.LocalObjectReference `json:"resourceConfigMap,omitempty"`
-}
diff --git a/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml b/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml
index f89b1151..a8234372 100644
--- a/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml
+++ b/charts/vela-core/crds/core.oam.dev_applicationrevisions.yaml
@@ -968,79 +968,6 @@ spec:
                               required:
                               - template
                               type: object
-                            helm:
-                              description: A Helm represents resources used by a Helm
-                                module
-                              properties:
-                                release:
-                                  description: Release records a Helm release used
-                                    by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                                repository:
-                                  description: HelmRelease records a Helm repository
-                                    used by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - release
-                              - repository
-                              type: object
-                            kube:
-                              description: Kube defines the encapsulation in raw Kubernetes
-                                resource format
-                              properties:
-                                parameters:
-                                  description: Parameters defines configurable parameters
-                                  items:
-                                    description: A KubeParameter defines a configurable
-                                      parameter of a component.
-                                    properties:
-                                      description:
-                                        description: Description of this parameter.
-                                        type: string
-                                      fieldPaths:
-                                        description: "FieldPaths specifies an array
-                                          of fields within this workload that will
-                                          be overwritten by the value of this parameter.
-                                          \tAll fields must be of the same type. Fields
-                                          are specified as JSON field paths without
-                                          a leading dot, for example 'spec.replicas'."
-                                        items:
-                                          type: string
-                                        type: array
-                                      name:
-                                        description: Name of this parameter
-                                        type: string
-                                      required:
-                                        default: false
-                                        description: Required specifies whether or
-                                          not a value for this parameter must be supplied
-                                          when authoring an Application.
-                                        type: boolean
-                                      type:
-                                        description: 'ValueType indicates the type
-                                          of the parameter value, and only supports
-                                          basic data types: string, number, boolean.'
-                                        enum:
-                                        - string
-                                        - number
-                                        - boolean
-                                        type: string
-                                    required:
-                                    - fieldPaths
-                                    - name
-                                    - type
-                                    type: object
-                                  type: array
-                                template:
-                                  description: Template defines the raw Kubernetes
-                                    resource
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - template
-                              type: object
                             terraform:
                               description: Terraform is the struct to describe cloud
                                 resources managed by Hashicorp Terraform
@@ -1353,79 +1280,6 @@ spec:
                               required:
                               - template
                               type: object
-                            helm:
-                              description: A Helm represents resources used by a Helm
-                                module
-                              properties:
-                                release:
-                                  description: Release records a Helm release used
-                                    by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                                repository:
-                                  description: HelmRelease records a Helm repository
-                                    used by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - release
-                              - repository
-                              type: object
-                            kube:
-                              description: Kube defines the encapsulation in raw Kubernetes
-                                resource format
-                              properties:
-                                parameters:
-                                  description: Parameters defines configurable parameters
-                                  items:
-                                    description: A KubeParameter defines a configurable
-                                      parameter of a component.
-                                    properties:
-                                      description:
-                                        description: Description of this parameter.
-                                        type: string
-                                      fieldPaths:
-                                        description: "FieldPaths specifies an array
-                                          of fields within this workload that will
-                                          be overwritten by the value of this parameter.
-                                          \tAll fields must be of the same type. Fields
-                                          are specified as JSON field paths without
-                                          a leading dot, for example 'spec.replicas'."
-                                        items:
-                                          type: string
-                                        type: array
-                                      name:
-                                        description: Name of this parameter
-                                        type: string
-                                      required:
-                                        default: false
-                                        description: Required specifies whether or
-                                          not a value for this parameter must be supplied
-                                          when authoring an Application.
-                                        type: boolean
-                                      type:
-                                        description: 'ValueType indicates the type
-                                          of the parameter value, and only supports
-                                          basic data types: string, number, boolean.'
-                                        enum:
-                                        - string
-                                        - number
-                                        - boolean
-                                        type: string
-                                    required:
-                                    - fieldPaths
-                                    - name
-                                    - type
-                                    type: object
-                                  type: array
-                                template:
-                                  description: Template defines the raw Kubernetes
-                                    resource
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - template
-                              type: object
                             terraform:
                               description: Terraform is the struct to describe cloud
                                 resources managed by Hashicorp Terraform
@@ -1697,79 +1551,6 @@ spec:
                               required:
                               - template
                               type: object
-                            helm:
-                              description: A Helm represents resources used by a Helm
-                                module
-                              properties:
-                                release:
-                                  description: Release records a Helm release used
-                                    by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                                repository:
-                                  description: HelmRelease records a Helm repository
-                                    used by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - release
-                              - repository
-                              type: object
-                            kube:
-                              description: Kube defines the encapsulation in raw Kubernetes
-                                resource format
-                              properties:
-                                parameters:
-                                  description: Parameters defines configurable parameters
-                                  items:
-                                    description: A KubeParameter defines a configurable
-                                      parameter of a component.
-                                    properties:
-                                      description:
-                                        description: Description of this parameter.
-                                        type: string
-                                      fieldPaths:
-                                        description: "FieldPaths specifies an array
-                                          of fields within this workload that will
-                                          be overwritten by the value of this parameter.
-                                          \tAll fields must be of the same type. Fields
-                                          are specified as JSON field paths without
-                                          a leading dot, for example 'spec.replicas'."
-                                        items:
-                                          type: string
-                                        type: array
-                                      name:
-                                        description: Name of this parameter
-                                        type: string
-                                      required:
-                                        default: false
-                                        description: Required specifies whether or
-                                          not a value for this parameter must be supplied
-                                          when authoring an Application.
-                                        type: boolean
-                                      type:
-                                        description: 'ValueType indicates the type
-                                          of the parameter value, and only supports
-                                          basic data types: string, number, boolean.'
-                                        enum:
-                                        - string
-                                        - number
-                                        - boolean
-                                        type: string
-                                    required:
-                                    - fieldPaths
-                                    - name
-                                    - type
-                                    type: object
-                                  type: array
-                                template:
-                                  description: Template defines the raw Kubernetes
-                                    resource
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - template
-                              type: object
                             terraform:
                               description: Terraform is the struct to describe cloud
                                 resources managed by Hashicorp Terraform
@@ -2193,79 +1974,6 @@ spec:
                               required:
                               - template
                               type: object
-                            helm:
-                              description: A Helm represents resources used by a Helm
-                                module
-                              properties:
-                                release:
-                                  description: Release records a Helm release used
-                                    by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                                repository:
-                                  description: HelmRelease records a Helm repository
-                                    used by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - release
-                              - repository
-                              type: object
-                            kube:
-                              description: Kube defines the encapsulation in raw Kubernetes
-                                resource format
-                              properties:
-                                parameters:
-                                  description: Parameters defines configurable parameters
-                                  items:
-                                    description: A KubeParameter defines a configurable
-                                      parameter of a component.
-                                    properties:
-                                      description:
-                                        description: Description of this parameter.
-                                        type: string
-                                      fieldPaths:
-                                        description: "FieldPaths specifies an array
-                                          of fields within this workload that will
-                                          be overwritten by the value of this parameter.
-                                          \tAll fields must be of the same type. Fields
-                                          are specified as JSON field paths without
-                                          a leading dot, for example 'spec.replicas'."
-                                        items:
-                                          type: string
-                                        type: array
-                                      name:
-                                        description: Name of this parameter
-                                        type: string
-                                      required:
-                                        default: false
-                                        description: Required specifies whether or
-                                          not a value for this parameter must be supplied
-                                          when authoring an Application.
-                                        type: boolean
-                                      type:
-                                        description: 'ValueType indicates the type
-                                          of the parameter value, and only supports
-                                          basic data types: string, number, boolean.'
-                                        enum:
-                                        - string
-                                        - number
-                                        - boolean
-                                        type: string
-                                    required:
-                                    - fieldPaths
-                                    - name
-                                    - type
-                                    type: object
-                                  type: array
-                                template:
-                                  description: Template defines the raw Kubernetes
-                                    resource
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - template
-                              type: object
                             terraform:
                               description: Terraform is the struct to describe cloud
                                 resources managed by Hashicorp Terraform
@@ -2524,79 +2232,6 @@ spec:
                               required:
                               - template
                               type: object
-                            helm:
-                              description: A Helm represents resources used by a Helm
-                                module
-                              properties:
-                                release:
-                                  description: Release records a Helm release used
-                                    by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                                repository:
-                                  description: HelmRelease records a Helm repository
-                                    used by a Helm module workload.
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - release
-                              - repository
-                              type: object
-                            kube:
-                              description: Kube defines the encapsulation in raw Kubernetes
-                                resource format
-                              properties:
-                                parameters:
-                                  description: Parameters defines configurable parameters
-                                  items:
-                                    description: A KubeParameter defines a configurable
-                                      parameter of a component.
-                                    properties:
-                                      description:
-                                        description: Description of this parameter.
-                                        type: string
-                                      fieldPaths:
-                                        description: "FieldPaths specifies an array
-                                          of fields within this workload that will
-                                          be overwritten by the value of this parameter.
-                                          \tAll fields must be of the same type. Fields
-                                          are specified as JSON field paths without
-                                          a leading dot, for example 'spec.replicas'."
-                                        items:
-                                          type: string
-                                        type: array
-                                      name:
-                                        description: Name of this parameter
-                                        type: string
-                                      required:
-                                        default: false
-                                        description: Required specifies whether or
-                                          not a value for this parameter must be supplied
-                                          when authoring an Application.
-                                        type: boolean
-                                      type:
-                                        description: 'ValueType indicates the type
-                                          of the parameter value, and only supports
-                                          basic data types: string, number, boolean.'
-                                        enum:
-                                        - string
-                                        - number
-                                        - boolean
-                                        type: string
-                                    required:
-                                    - fieldPaths
-                                    - name
-                                    - type
-                                    type: object
-                                  type: array
-                                template:
-                                  description: Template defines the raw Kubernetes
-                                    resource
-                                  type: object
-                                  x-kubernetes-preserve-unknown-fields: true
-                              required:
-                              - template
-                              type: object
                             terraform:
                               description: Terraform is the struct to describe cloud
                                 resources managed by Hashicorp Terraform
diff --git a/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml b/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml
index 3a60031a..bd3687d9 100644
--- a/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml
+++ b/charts/vela-core/crds/core.oam.dev_componentdefinitions.yaml
@@ -101,76 +101,6 @@ spec:
                     required:
                     - template
                     type: object
-                  helm:
-                    description: A Helm represents resources used by a Helm module
-                    properties:
-                      release:
-                        description: Release records a Helm release used by a Helm
-                          module workload.
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                      repository:
-                        description: HelmRelease records a Helm repository used by
-                          a Helm module workload.
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                    required:
-                    - release
-                    - repository
-                    type: object
-                  kube:
-                    description: Kube defines the encapsulation in raw Kubernetes
-                      resource format
-                    properties:
-                      parameters:
-                        description: Parameters defines configurable parameters
-                        items:
-                          description: A KubeParameter defines a configurable parameter
-                            of a component.
-                          properties:
-                            description:
-                              description: Description of this parameter.
-                              type: string
-                            fieldPaths:
-                              description: "FieldPaths specifies an array of fields
-                                within this workload that will be overwritten by the
-                                value of this parameter. \tAll fields must be of the
-                                same type. Fields are specified as JSON field paths
-                                without a leading dot, for example 'spec.replicas'."
-                              items:
-                                type: string
-                              type: array
-                            name:
-                              description: Name of this parameter
-                              type: string
-                            required:
-                              default: false
-                              description: Required specifies whether or not a value
-                                for this parameter must be supplied when authoring
-                                an Application.
-                              type: boolean
-                            type:
-                              description: 'ValueType indicates the type of the parameter
-                                value, and only supports basic data types: string,
-                                number, boolean.'
-                              enum:
-                              - string
-                              - number
-                              - boolean
-                              type: string
-                          required:
-                          - fieldPaths
-                          - name
-                          - type
-                          type: object
-                        type: array
-                      template:
-                        description: Template defines the raw Kubernetes resource
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                    required:
-                    - template
-                    type: object
                   terraform:
                     description: Terraform is the struct to describe cloud resources
                       managed by Hashicorp Terraform
diff --git a/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml b/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml
index a970b80c..ed57e52e 100644
--- a/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml
+++ b/charts/vela-core/crds/core.oam.dev_definitionrevisions.yaml
@@ -142,78 +142,6 @@ spec:
                             required:
                             - template
                             type: object
-                          helm:
-                            description: A Helm represents resources used by a Helm
-                              module
-                            properties:
-                              release:
-                                description: Release records a Helm release used by
-                                  a Helm module workload.
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                              repository:
-                                description: HelmRelease records a Helm repository
-                                  used by a Helm module workload.
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                            required:
-                            - release
-                            - repository
-                            type: object
-                          kube:
-                            description: Kube defines the encapsulation in raw Kubernetes
-                              resource format
-                            properties:
-                              parameters:
-                                description: Parameters defines configurable parameters
-                                items:
-                                  description: A KubeParameter defines a configurable
-                                    parameter of a component.
-                                  properties:
-                                    description:
-                                      description: Description of this parameter.
-                                      type: string
-                                    fieldPaths:
-                                      description: "FieldPaths specifies an array
-                                        of fields within this workload that will be
-                                        overwritten by the value of this parameter.
-                                        \tAll fields must be of the same type. Fields
-                                        are specified as JSON field paths without
-                                        a leading dot, for example 'spec.replicas'."
-                                      items:
-                                        type: string
-                                      type: array
-                                    name:
-                                      description: Name of this parameter
-                                      type: string
-                                    required:
-                                      default: false
-                                      description: Required specifies whether or not
-                                        a value for this parameter must be supplied
-                                        when authoring an Application.
-                                      type: boolean
-                                    type:
-                                      description: 'ValueType indicates the type of
-                                        the parameter value, and only supports basic
-                                        data types: string, number, boolean.'
-                                      enum:
-                                      - string
-                                      - number
-                                      - boolean
-                                      type: string
-                                  required:
-                                  - fieldPaths
-                                  - name
-                                  - type
-                                  type: object
-                                type: array
-                              template:
-                                description: Template defines the raw Kubernetes resource
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                            required:
-                            - template
-                            type: object
                           terraform:
                             description: Terraform is the struct to describe cloud
                               resources managed by Hashicorp Terraform
@@ -473,78 +401,6 @@ spec:
                             required:
                             - template
                             type: object
-                          helm:
-                            description: A Helm represents resources used by a Helm
-                              module
-                            properties:
-                              release:
-                                description: Release records a Helm release used by
-                                  a Helm module workload.
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                              repository:
-                                description: HelmRelease records a Helm repository
-                                  used by a Helm module workload.
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                            required:
-                            - release
-                            - repository
-                            type: object
-                          kube:
-                            description: Kube defines the encapsulation in raw Kubernetes
-                              resource format
-                            properties:
-                              parameters:
-                                description: Parameters defines configurable parameters
-                                items:
-                                  description: A KubeParameter defines a configurable
-                                    parameter of a component.
-                                  properties:
-                                    description:
-                                      description: Description of this parameter.
-                                      type: string
-                                    fieldPaths:
-                                      description: "FieldPaths specifies an array
-                                        of fields within this workload that will be
-                                        overwritten by the value of this parameter.
-                                        \tAll fields must be of the same type. Fields
-                                        are specified as JSON field paths without
-                                        a leading dot, for example 'spec.replicas'."
-                                      items:
-                                        type: string
-                                      type: array
-                                    name:
-                                      description: Name of this parameter
-                                      type: string
-                                    required:
-                                      default: false
-                                      description: Required specifies whether or not
-                                        a value for this parameter must be supplied
-                                        when authoring an Application.
-                                      type: boolean
-                                    type:
-                                      description: 'ValueType indicates the type of
-                                        the parameter value, and only supports basic
-                                        data types: string, number, boolean.'
-                                      enum:
-                                      - string
-                                      - number
-                                      - boolean
-                                      type: string
-                                  required:
-                                  - fieldPaths
-                                  - name
-                                  - type
-                                  type: object
-                                type: array
-                              template:
-                                description: Template defines the raw Kubernetes resource
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                            required:
-                            - template
-                            type: object
                           terraform:
                             description: Terraform is the struct to describe cloud
                               resources managed by Hashicorp Terraform
@@ -805,78 +661,6 @@ spec:
                             required:
                             - template
                             type: object
-                          helm:
-                            description: A Helm represents resources used by a Helm
-                              module
-                            properties:
-                              release:
-                                description: Release records a Helm release used by
-                                  a Helm module workload.
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                              repository:
-                                description: HelmRelease records a Helm repository
-                                  used by a Helm module workload.
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                            required:
-                            - release
-                            - repository
-                            type: object
-                          kube:
-                            description: Kube defines the encapsulation in raw Kubernetes
-                              resource format
-                            properties:
-                              parameters:
-                                description: Parameters defines configurable parameters
-                                items:
-                                  description: A KubeParameter defines a configurable
-                                    parameter of a component.
-                                  properties:
-                                    description:
-                                      description: Description of this parameter.
-                                      type: string
-                                    fieldPaths:
-                                      description: "FieldPaths specifies an array
-                                        of fields within this workload that will be
-                                        overwritten by the value of this parameter.
-                                        \tAll fields must be of the same type. Fields
-                                        are specified as JSON field paths without
-                                        a leading dot, for example 'spec.replicas'."
-                                      items:
-                                        type: string
-                                      type: array
-                                    name:
-                                      description: Name of this parameter
-                                      type: string
-                                    required:
-                                      default: false
-                                      description: Required specifies whether or not
-                                        a value for this parameter must be supplied
-                                        when authoring an Application.
-                                      type: boolean
-                                    type:
-                                      description: 'ValueType indicates the type of
-                                        the parameter value, and only supports basic
-                                        data types: string, number, boolean.'
-                                      enum:
-                                      - string
-                                      - number
-                                      - boolean
-                                      type: string
-                                  required:
-                                  - fieldPaths
-                                  - name
-                                  - type
-                                  type: object
-                                type: array
-                              template:
-                                description: Template defines the raw Kubernetes resource
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                            required:
-                            - template
-                            type: object
                           terraform:
                             description: Terraform is the struct to describe cloud
                               resources managed by Hashicorp Terraform
@@ -1112,78 +896,6 @@ spec:
                             required:
                             - template
                             type: object
-                          helm:
-                            description: A Helm represents resources used by a Helm
-                              module
-                            properties:
-                              release:
-                                description: Release records a Helm release used by
-                                  a Helm module workload.
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                              repository:
-                                description: HelmRelease records a Helm repository
-                                  used by a Helm module workload.
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                            required:
-                            - release
-                            - repository
-                            type: object
-                          kube:
-                            description: Kube defines the encapsulation in raw Kubernetes
-                              resource format
-                            properties:
-                              parameters:
-                                description: Parameters defines configurable parameters
-                                items:
-                                  description: A KubeParameter defines a configurable
-                                    parameter of a component.
-                                  properties:
-                                    description:
-                                      description: Description of this parameter.
-                                      type: string
-                                    fieldPaths:
-                                      description: "FieldPaths specifies an array
-                                        of fields within this workload that will be
-                                        overwritten by the value of this parameter.
-                                        \tAll fields must be of the same type. Fields
-                                        are specified as JSON field paths without
-                                        a leading dot, for example 'spec.replicas'."
-                                      items:
-                                        type: string
-                                      type: array
-                                    name:
-                                      description: Name of this parameter
-                                      type: string
-                                    required:
-                                      default: false
-                                      description: Required specifies whether or not
-                                        a value for this parameter must be supplied
-                                        when authoring an Application.
-                                      type: boolean
-                                    type:
-                                      description: 'ValueType indicates the type of
-                                        the parameter value, and only supports basic
-                                        data types: string, number, boolean.'
-                                      enum:
-                                      - string
-                                      - number
-                                      - boolean
-                                      type: string
-                                  required:
-                                  - fieldPaths
-                                  - name
-                                  - type
-                                  type: object
-                                type: array
-                              template:
-                                description: Template defines the raw Kubernetes resource
-                                type: object
-                                x-kubernetes-preserve-unknown-fields: true
-                            required:
-                            - template
-                            type: object
                           terraform:
                             description: Terraform is the struct to describe cloud
                               resources managed by Hashicorp Terraform
diff --git a/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml b/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml
index f49637b6..c06f06e4 100644
--- a/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml
+++ b/charts/vela-core/crds/core.oam.dev_policydefinitions.yaml
@@ -74,76 +74,6 @@ spec:
                     required:
                     - template
                     type: object
-                  helm:
-                    description: A Helm represents resources used by a Helm module
-                    properties:
-                      release:
-                        description: Release records a Helm release used by a Helm
-                          module workload.
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                      repository:
-                        description: HelmRelease records a Helm repository used by
-                          a Helm module workload.
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                    required:
-                    - release
-                    - repository
-                    type: object
-                  kube:
-                    description: Kube defines the encapsulation in raw Kubernetes
-                      resource format
-                    properties:
-                      parameters:
-                        description: Parameters defines configurable parameters
-                        items:
-                          description: A KubeParameter defines a configurable parameter
-                            of a component.
-                          properties:
-                            description:
-                              description: Description of this parameter.
-                              type: string
-                            fieldPaths:
-                              description: "FieldPaths specifies an array of fields
-                                within this workload that will be overwritten by the
-                                value of this parameter. \tAll fields must be of the
-                                same type. Fields are specified as JSON field paths
-                                without a leading dot, for example 'spec.replicas'."
-                              items:
-                                type: string
-                              type: array
-                            name:
-                              description: Name of this parameter
-                              type: string
-                            required:
-                              default: false
-                              description: Required specifies whether or not a value
-                                for this parameter must be supplied when authoring
-                                an Application.
-                              type: boolean
-                            type:
-                              description: 'ValueType indicates the type of the parameter
-                                value, and only supports basic data types: string,
-                                number, boolean.'
-                              enum:
-                              - string
-                              - number
-                              - boolean
-                              type: string
-                          required:
-                          - fieldPaths
-                          - name
-                          - type
-                          type: object
-                        type: array
-                      template:
-                        description: Template defines the raw Kubernetes resource
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                    required:
-                    - template
-                    type: object
                   terraform:
                     description: Terraform is the struct to describe cloud resources
                       managed by Hashicorp Terraform
diff --git a/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml b/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml
index b9648a94..f79cd7a1 100644
--- a/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml
+++ b/charts/vela-core/crds/core.oam.dev_resourcetrackers.yaml
@@ -130,56 +130,6 @@ spec:
             required:
             - applicationGeneration
             type: object
-          status:
-            description: ResourceTrackerStatus define the status of resourceTracker
-              For backward-compatibility
-            properties:
-              trackedResources:
-                description: Deprecated
-                items:
-                  description: ClusterObjectReference defines the object reference
-                    with cluster.
-                  properties:
-                    apiVersion:
-                      description: API version of the referent.
-                      type: string
-                    cluster:
-                      type: string
-                    creator:
-                      type: string
-                    fieldPath:
-                      description: 'If referring to a piece of an object instead of
-                        an entire object, this string should contain a valid JSON/Go
-                        field access statement, such as desiredState.manifest.containers[2].
-                        For example, if the object reference is to a container within
-                        a pod, this would take on a value like: "spec.containers{name}"
-                        (where "name" refers to the name of the container that triggered
-                        the event) or if no container name is specified "spec.containers[2]"
-                        (container with index 2 in this pod). This syntax is chosen
-                        only to have some well-defined way of referencing a part of
-                        an object. TODO: this design is not final and this field is
-                        subject to change in the future.'
-                      type: string
-                    kind:
-                      description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
-                      type: string
-                    name:
-                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
-                      type: string
-                    namespace:
-                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
-                      type: string
-                    resourceVersion:
-                      description: 'Specific resourceVersion to which this reference
-                        is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
-                      type: string
-                    uid:
-                      description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
-                      type: string
-                  type: object
-                  x-kubernetes-map-type: atomic
-                type: array
-            type: object
         type: object
     served: true
     storage: true
diff --git a/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml b/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml
index 0edd49f5..3c8b1838 100644
--- a/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml
+++ b/charts/vela-core/crds/core.oam.dev_traitdefinitions.yaml
@@ -119,76 +119,6 @@ spec:
                     required:
                     - template
                     type: object
-                  helm:
-                    description: A Helm represents resources used by a Helm module
-                    properties:
-                      release:
-                        description: Release records a Helm release used by a Helm
-                          module workload.
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                      repository:
-                        description: HelmRelease records a Helm repository used by
-                          a Helm module workload.
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                    required:
-                    - release
-                    - repository
-                    type: object
-                  kube:
-                    description: Kube defines the encapsulation in raw Kubernetes
-                      resource format
-                    properties:
-                      parameters:
-                        description: Parameters defines configurable parameters
-                        items:
-                          description: A KubeParameter defines a configurable parameter
-                            of a component.
-                          properties:
-                            description:
-                              description: Description of this parameter.
-                              type: string
-                            fieldPaths:
-                              description: "FieldPaths specifies an array of fields
-                                within this workload that will be overwritten by the
-                                value of this parameter. \tAll fields must be of the
-                                same type. Fields are specified as JSON field paths
-                                without a leading dot, for example 'spec.replicas'."
-                              items:
-                                type: string
-                              type: array
-                            name:
-                              description: Name of this parameter
-                              type: string
-                            required:
-                              default: false
-                              description: Required specifies whether or not a value
-                                for this parameter must be supplied when authoring
-                                an Application.
-                              type: boolean
-                            type:
-                              description: 'ValueType indicates the type of the parameter
-                                value, and only supports basic data types: string,
-                                number, boolean.'
-                              enum:
-                              - string
-                              - number
-                              - boolean
-                              type: string
-                          required:
-                          - fieldPaths
-                          - name
-                          - type
-                          type: object
-                        type: array
-                      template:
-                        description: Template defines the raw Kubernetes resource
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                    required:
-                    - template
-                    type: object
                   terraform:
                     description: Terraform is the struct to describe cloud resources
                       managed by Hashicorp Terraform
diff --git a/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml b/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml
index e7b29c06..9357cc29 100644
--- a/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml
+++ b/charts/vela-core/crds/core.oam.dev_workflowstepdefinitions.yaml
@@ -71,76 +71,6 @@ spec:
                     required:
                     - template
                     type: object
-                  helm:
-                    description: A Helm represents resources used by a Helm module
-                    properties:
-                      release:
-                        description: Release records a Helm release used by a Helm
-                          module workload.
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                      repository:
-                        description: HelmRelease records a Helm repository used by
-                          a Helm module workload.
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                    required:
-                    - release
-                    - repository
-                    type: object
-                  kube:
-                    description: Kube defines the encapsulation in raw Kubernetes
-                      resource format
-                    properties:
-                      parameters:
-                        description: Parameters defines configurable parameters
-                        items:
-                          description: A KubeParameter defines a configurable parameter
-                            of a component.
-                          properties:
-                            description:
-                              description: Description of this parameter.
-                              type: string
-                            fieldPaths:
-                              description: "FieldPaths specifies an array of fields
-                                within this workload that will be overwritten by the
-                                value of this parameter. \tAll fields must be of the
-                                same type. Fields are specified as JSON field paths
-                                without a leading dot, for example 'spec.replicas'."
-                              items:
-                                type: string
-                              type: array
-                            name:
-                              description: Name of this parameter
-                              type: string
-                            required:
-                              default: false
-                              description: Required specifies whether or not a value
-                                for this parameter must be supplied when authoring
-                                an Application.
-                              type: boolean
-                            type:
-                              description: 'ValueType indicates the type of the parameter
-                                value, and only supports basic data types: string,
-                                number, boolean.'
-                              enum:
-                              - string
-                              - number
-                              - boolean
-                              type: string
-                          required:
-                          - fieldPaths
-                          - name
-                          - type
-                          type: object
-                        type: array
-                      template:
-                        description: Template defines the raw Kubernetes resource
-                        type: object
-                        x-kubernetes-preserve-unknown-fields: true
-                    required:
-                    - template
-                    type: object
                   terraform:
                     description: Terraform is the struct to describe cloud resources
                       managed by Hashicorp Terraform
diff --git a/cmd/core/app/options/options.go b/cmd/core/app/options/options.go
index 0a54ff3b..f8328f3e 100644
--- a/cmd/core/app/options/options.go
+++ b/cmd/core/app/options/options.go
@@ -25,6 +25,7 @@ import (
 	"github.com/kubevela/pkg/controller/sharding"
 	pkgmulticluster "github.com/kubevela/pkg/multicluster"
 	utillog "github.com/kubevela/pkg/util/log"
+	"github.com/kubevela/pkg/util/profiling"
 	wfTypes "github.com/kubevela/workflow/pkg/types"
 	utilfeature "k8s.io/apiserver/pkg/util/feature"
 	cliflag "k8s.io/component-base/cli/flag"
@@ -53,7 +54,6 @@ type CoreOptions struct {
 	InformerSyncPeriod         time.Duration
 	QPS                        float64
 	Burst                      int
-	PprofAddr                  string
 	LeaderElectionResourceLock string
 	LeaseDuration              time.Duration
 	RenewDeadLine              time.Duration
@@ -90,7 +90,6 @@ func NewCoreOptions() *CoreOptions {
 		InformerSyncPeriod:         10 * time.Hour,
 		QPS:                        50,
 		Burst:                      100,
-		PprofAddr:                  "",
 		LeaderElectionResourceLock: "configmapsleases",
 		LeaseDuration:              15 * time.Second,
 		RenewDeadLine:              10 * time.Second,
@@ -123,7 +122,6 @@ func (s *CoreOptions) Flags() cliflag.NamedFlagSets {
 		"The re-sync period for informer in controller-runtime. This is a system-level configuration.")
 	gfs.Float64Var(&s.QPS, "kube-api-qps", s.QPS, "the qps for reconcile clients. Low qps may lead to low throughput. High qps may give stress to api-server. Raise this value if concurrent-reconciles is set to be high.")
 	gfs.IntVar(&s.Burst, "kube-api-burst", s.Burst, "the burst for reconcile clients. Recommend setting it qps*2.")
-	gfs.StringVar(&s.PprofAddr, "pprof-addr", s.PprofAddr, "The address for pprof to use while exporting profiling results. The default value is empty which means do not expose it. Set it to address like :6666 to expose it.")
 	gfs.StringVar(&s.LeaderElectionResourceLock, "leader-election-resource-lock", s.LeaderElectionResourceLock, "The resource lock to use for leader election")
 	gfs.DurationVar(&s.LeaseDuration, "leader-election-lease-duration", s.LeaseDuration,
 		"The duration that non-leader candidates will wait to force acquire leadership")
@@ -163,6 +161,7 @@ func (s *CoreOptions) Flags() cliflag.NamedFlagSets {
 	kfs := fss.FlagSet("klog")
 	pkgclient.AddTimeoutControllerClientFlags(fss.FlagSet("controllerclient"))
 	utillog.AddFlags(kfs)
+	profiling.AddFlags(fss.FlagSet("profiling"))
 
 	if s.LogDebug {
 		_ = kfs.Set("v", strconv.Itoa(int(commonconfig.LogDebug)))
diff --git a/cmd/core/app/server.go b/cmd/core/app/server.go
index 9482b37f..f1ad68e7 100644
--- a/cmd/core/app/server.go
+++ b/cmd/core/app/server.go
@@ -28,6 +28,7 @@ import (
 	velaclient "github.com/kubevela/pkg/controller/client"
 	"github.com/kubevela/pkg/controller/sharding"
 	"github.com/kubevela/pkg/meta"
+	"github.com/kubevela/pkg/util/profiling"
 	"github.com/kubevela/workflow/pkg/cue/packages"
 	"github.com/pkg/errors"
 	"github.com/spf13/cobra"
@@ -52,7 +53,6 @@ import (
 	"github.com/oam-dev/kubevela/pkg/monitor/watcher"
 	"github.com/oam-dev/kubevela/pkg/multicluster"
 	"github.com/oam-dev/kubevela/pkg/oam"
-	pkgutil "github.com/oam-dev/kubevela/pkg/utils"
 	"github.com/oam-dev/kubevela/pkg/utils/common"
 	"github.com/oam-dev/kubevela/pkg/utils/util"
 	oamwebhook "github.com/oam-dev/kubevela/pkg/webhook/core.oam.dev"
@@ -101,10 +101,7 @@ func run(ctx context.Context, s *options.CoreOptions) error {
 		"QPS", restConfig.QPS,
 		"Burst", restConfig.Burst,
 	)
-
-	if s.PprofAddr != "" {
-		go pkgutil.EnablePprof(s.PprofAddr, nil)
-	}
+	go profiling.StartProfilingServer(nil)
 
 	// wrapper the round tripper by multi cluster rewriter
 	if s.EnableClusterGateway {
diff --git a/go.mod b/go.mod
index 375c26b2..702c0df6 100644
--- a/go.mod
+++ b/go.mod
@@ -13,7 +13,6 @@ require (
 	github.com/briandowns/spinner v1.23.0
 	github.com/chartmuseum/helm-push v0.10.4
 	github.com/containerd/containerd v1.7.1
-	github.com/coreos/prometheus-operator v0.41.1
 	github.com/crossplane/crossplane-runtime v0.19.2
 	github.com/cue-exp/kubevelafix v0.0.0-20220922150317-aead819d979d
 	github.com/dave/jennifer v1.6.1
diff --git a/go.sum b/go.sum
index f22b4252..0bedf275 100644
--- a/go.sum
+++ b/go.sum
@@ -1,17 +1,10 @@
 cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y=
 cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A=
-cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
-cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o=
 cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow=
 cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY=
 cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY=
 cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
-cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
 cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
-cloud.google.com/go/storage v1.3.0/go.mod h1:9IAwXhoyBJ7z9LcAwkj0/7NnPzYaPeZxxVp3zm+5IqA=
-cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
-collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE=
-contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs=
 cuelang.org/go v0.5.0 h1:D6N0UgTGJCOxFKU8RU+qYvavKNsVc/+ZobmifStVJzU=
 cuelang.org/go v0.5.0/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws=
 dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
@@ -19,56 +12,24 @@ github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1
 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0=
 github.com/AlecAivazis/survey/v2 v2.1.1 h1:LEMbHE0pLj75faaVEKClEX1TM4AJmmnOh9eimREzLWI=
 github.com/AlecAivazis/survey/v2 v2.1.1/go.mod h1:9FJRdMdDm8rnT+zHVbvQT2RTSTLq0Ttd6q3Vl2fahjk=
-github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4=
-github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc=
-github.com/Azure/azure-sdk-for-go v23.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/azure-sdk-for-go v36.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/azure-sdk-for-go v41.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/azure-sdk-for-go v43.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
-github.com/Azure/azure-storage-blob-go v0.8.0/go.mod h1:lPI3aLPpuLTeUwh1sViKXFxwl2B6teiRqI0deQUvsw0=
-github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
 github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
 github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
 github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
-github.com/Azure/go-autorest v11.1.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest v11.2.8+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
 github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
-github.com/Azure/go-autorest/autorest v0.9.3-0.20191028180845-3492b2aff503/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
-github.com/Azure/go-autorest/autorest v0.10.0/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
-github.com/Azure/go-autorest/autorest v0.10.2/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
 github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=
-github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
-github.com/Azure/go-autorest/autorest/adal v0.8.1-0.20191028180845-3492b2aff503/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc=
-github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
-github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
 github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
-github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA=
-github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g=
 github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
-github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
-github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0=
-github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM=
 github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
-github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA=
-github.com/Azure/go-autorest/autorest/to v0.3.1-0.20191028180845-3492b2aff503/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA=
-github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI=
-github.com/Azure/go-autorest/autorest/validation v0.2.1-0.20191028180845-3492b2aff503/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI=
-github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc=
 github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
 github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
 github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
 github.com/BurntSushi/toml v1.0.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
 github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
 github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
-github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
 github.com/FogDong/uitable v0.0.5 h1:1bJo/uvhGUC6i8JPHZCr8XKMHiDExE7mQkOCmDl0ryQ=
 github.com/FogDong/uitable v0.0.5/go.mod h1:1yEaP13SkkBUj3HvqKIUWnsb42XigyZbNle84mc5kLM=
-github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
 github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=
 github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
 github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
@@ -96,29 +57,19 @@ github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMo
 github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8 h1:xzYJEypr/85nBpB11F9br+3HUrpgb+fcm5iADzXXYEw=
 github.com/Netflix/go-expect v0.0.0-20180615182759-c93bf25de8e8/go.mod h1:oX5x61PbNXchhh0oikYAH+4Pcfw5LKv21+Jnpr6r6Pc=
 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
-github.com/OneOfOne/xxhash v1.2.6/go.mod h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
 github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA=
 github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g=
-github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
 github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
-github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
 github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
 github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs=
-github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
-github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
-github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g=
 github.com/a8m/expect v1.0.0/go.mod h1:4IwSCMumY49ScypDnjNbYEjgVeqy1/U2cEs3Lat96eA=
 github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ=
 github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4=
-github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c=
 github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
 github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
 github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
 github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
 github.com/agiledragon/gomonkey/v2 v2.4.0 h1:YDQJYiSQ8o78dCMXehU1E4F/Kh4jPX+MV+/iK/yfL7s=
-github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
-github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
 github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
@@ -128,19 +79,13 @@ github.com/alessio/shellescape v1.4.1 h1:V7yhSDDn8LP4lc4jS8pFkt0zCnzVJlG5JXy9BVK
 github.com/alessio/shellescape v1.4.1/go.mod h1:PZAiSCk0LJaZkiCSkPv8qIobYglO3FPpyFjDCtHLS30=
 github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704 h1:PpfENOj/vPfhhy9N2OFRjpue0hjM5XqAp2thFmkXXIk=
 github.com/aliyun/alibaba-cloud-sdk-go v1.61.1704/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU=
-github.com/aliyun/aliyun-oss-go-sdk v2.0.4+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8=
-github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8=
 github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
 github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
-github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q=
 github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
 github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20210826220005-b48c857c3a0e/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY=
 github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220418222510-f25a4f6275ed/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY=
 github.com/antlr/antlr4/runtime/Go/antlr v1.4.10 h1:yL7+Jz0jTC6yykIK/Wh74gnTJnrGr5AyrNMXuA0gves=
 github.com/antlr/antlr4/runtime/Go/antlr v1.4.10/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY=
-github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0=
-github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
-github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
 github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
 github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
 github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw=
@@ -148,27 +93,15 @@ github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkE
 github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
 github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
 github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
-github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs=
-github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc=
 github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
 github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
-github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
 github.com/aryann/difflib v0.0.0-20210328193216-ff5ff6dc229b h1:uUXgbcPDK3KpW29o4iy7GtuappbWT0l5NaMo9H9pJDw=
 github.com/aryann/difflib v0.0.0-20210328193216-ff5ff6dc229b/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
-github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
 github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
-github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
 github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY=
 github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg=
-github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
-github.com/aws/aws-sdk-go v1.25.48/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
-github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
-github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
-github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc=
 github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM=
 github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
 github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
@@ -179,16 +112,11 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r
 github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
 github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
 github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM=
-github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
 github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
 github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
 github.com/bluele/gcache v0.0.2 h1:WcbfdXICg7G/DGBh1PFfcirkWOQV+v077yF1pSy3DGw=
 github.com/bluele/gcache v0.0.2/go.mod h1:m15KV+ECjptwSPxKhOhQoAFQVtUFjTVkc3H8o0t/fp0=
-github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c=
-github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
-github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA=
-github.com/brancz/kube-rbac-proxy v0.5.0/go.mod h1:cL2VjiIFGS90Cjh5ZZ8+It6tMcBt8rwvuw2J6Mamnl0=
 github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A=
 github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE=
 github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70=
@@ -198,11 +126,6 @@ github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZ
 github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ=
 github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o=
 github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
-github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34=
-github.com/campoy/embedmd v1.0.0/go.mod h1:oxyr9RCiSXg0M3VJ3ks0UGfp98BpSSGr0kpiX3MzVl8=
-github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
-github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
 github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
 github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
 github.com/cenkalti/backoff/v4 v4.2.0 h1:HN5dHm3WBOgndBH6E8V0q2jIYIR3s9yglV8k/+MN3u4=
@@ -210,9 +133,7 @@ github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
 github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
-github.com/cespare/xxhash v0.0.0-20181017004759-096ff4a8a059/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
 github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
-github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM=
 github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
 github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
@@ -224,9 +145,6 @@ github.com/chartmuseum/helm-push v0.10.4/go.mod h1:T+g3wEExKHZADxEU3ZwCRZm5Wa5cr
 github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
 github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
-github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
-github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE=
 github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I=
 github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs=
@@ -241,11 +159,9 @@ github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWH
 github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
 github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E=
 github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw=
-github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
 github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo=
 github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA=
 github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI=
-github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
 github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
 github.com/containerd/containerd v1.7.1 h1:k8DbDkSOwt5rgxQ3uCI4WMKIJxIndSCBUaGm5oRn+Go=
 github.com/containerd/containerd v1.7.1/go.mod h1:gA+nJUADRBm98QS5j5RPROnt0POQSMK+r7P7EGMC/Qc=
@@ -255,23 +171,15 @@ github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNA
 github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
 github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
 github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
-github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
 github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
 github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
 github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
 github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
-github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
 github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
 github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
-github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
-github.com/coreos/prometheus-operator v0.41.1 h1:MEhY9syliPlQg+VlFRUfNodUEVXRXJ2n1pFG0aBp+mI=
-github.com/coreos/prometheus-operator v0.41.1/go.mod h1:LhLfEBydppl7nvfEA1jIqlF3xJ9myHCnzrU+HHDxRd4=
-github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
-github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
 github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
 github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
 github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
@@ -287,23 +195,17 @@ github.com/cue-exp/kubevelafix v0.0.0-20220922150317-aead819d979d h1:VNJA1nSKA8X
 github.com/cue-exp/kubevelafix v0.0.0-20220922150317-aead819d979d/go.mod h1:SyTryzw/zYJIogw3H2IRcYdV5gsSoVMJiKGElcQK09I=
 github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI=
 github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
-github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg=
 github.com/dave/jennifer v1.6.1 h1:T4T/67t6RAA5AIV6+NP8Uk/BIsXgDoqEowgycdQQLuk=
 github.com/dave/jennifer v1.6.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc=
-github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
-github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
 github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgryski/go-bitstream v0.0.0-20180413035011-3522498ce2c8/go.mod h1:VMaSuZ+SZcx/wljOQKvp5srsbCiKDEb6K2wC4+PiBmQ=
 github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
-github.com/dgryski/go-sip13 v0.0.0-20190329191031-25c5027a8c7b/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
 github.com/distribution/distribution/v3 v3.0.0-20221208165359-362910506bc2 h1:aBfCb7iqHmDEIp6fBvC/hQUddQfg+3qdYjwzaiP9Hnc=
 github.com/docker/cli v20.10.9+incompatible h1:OJ7YkwQA+k2Oi51lmCojpjiygKpi76P7bg91b2eJxYU=
 github.com/docker/cli v20.10.9+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
-github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
 github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
 github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
 github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
@@ -313,26 +215,12 @@ github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5Xh
 github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8=
 github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
 github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
-github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
 github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
 github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 h1:UhxFibDNY/bfvqU5CAUmr9zpesgbU6SWc8/B4mflAE4=
-github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
 github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
-github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
 github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
 github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
-github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
-github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
-github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
-github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts=
-github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M=
-github.com/elastic/go-sysinfo v1.0.1/go.mod h1:O/D5m1VpYLwGjCYzEt63g3Z1uO3jXfwyzzjiW90t8cY=
-github.com/elastic/go-sysinfo v1.1.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0=
-github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU=
-github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss=
-github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
 github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc=
 github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
 github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
@@ -345,7 +233,6 @@ github.com/emicklei/proto v1.10.0 h1:pDGyFRVV5RvV+nkBK9iy3q67FBy9Xa7vwrOTE+g5aGw
 github.com/emicklei/proto v1.10.0/go.mod h1:rn1FgRS/FANiZdD2djyH7TMA9jdRDcYQ9IEN9yvjX0A=
 github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
 github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
-github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
@@ -357,10 +244,7 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.
 github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw=
 github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY=
-github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ=
-github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
-github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U=
@@ -369,7 +253,6 @@ github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJ
 github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4=
 github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM=
 github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4=
-github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc=
 github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=
 github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc=
 github.com/fatih/color v0.0.0-20180516100307-2d684516a886/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
@@ -378,7 +261,6 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL
 github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
 github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs=
 github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw=
-github.com/fatih/structtag v1.1.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
 github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
 github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
 github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
@@ -392,14 +274,10 @@ github.com/fluxcd/pkg/apis/meta v1.0.0 h1:i9IGHd/VNEZELX7mepkiYFbJxs2J5znaB4cN9z
 github.com/fluxcd/pkg/apis/meta v1.0.0/go.mod h1:04ZdpZYm1x+aL93K4daNHW1UX6E8K7Gyf5za9OhrE+U=
 github.com/fluxcd/source-controller/api v0.24.4 h1:m54sS1rJlgJf5j9qDRgKLhbPJAnJ9dY+VrstPKj0aQo=
 github.com/fluxcd/source-controller/api v0.24.4/go.mod h1:b0MmMPGE8gcpgSyGXe5m7see77tBW26eZrvGkkPstUs=
-github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
 github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
 github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
 github.com/form3tech-oss/jwt-go v3.2.5+incompatible h1:/l4kBbb4/vGSsdtB5nUe8L7B9mImVMaBPw9L/0TBHU8=
 github.com/form3tech-oss/jwt-go v3.2.5+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
-github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
-github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4=
-github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20=
 github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
 github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
@@ -417,15 +295,10 @@ github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSy
 github.com/getkin/kin-openapi v0.94.0 h1:bAxg2vxgnHHHoeefVdmGbR+oxtJlcv5HsJJa3qmAHuo=
 github.com/getkin/kin-openapi v0.94.0/go.mod h1:LWZfzOd7PRy8GJ1dJ6mCU6tNdSfOwRac1BUPam4aw6Q=
 github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ=
-github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
 github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
 github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
 github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4=
-github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
-github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q=
-github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE=
-github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24=
 github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w=
 github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
 github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4=
@@ -438,13 +311,11 @@ github.com/go-git/go-git-fixtures/v4 v4.3.1/go.mod h1:8LHG1a3SRW71ettAD/jW13h8c6
 github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHsk=
 github.com/go-git/go-git/v5 v5.6.1/go.mod h1:mvyoL6Unz0PiTQrGQfSfiLFhBH1c1e84ylC2MDs4ee8=
 github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
-github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 github.com/go-gorp/gorp/v3 v3.0.5/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw=
 github.com/go-gorp/gorp/v3 v3.1.0 h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs=
 github.com/go-gorp/gorp/v3 v3.1.0/go.mod h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw=
 github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
-github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o=
 github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY=
 github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0=
 github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
@@ -464,88 +335,19 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre
 github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro=
 github.com/go-logr/zapr v1.2.3 h1:a9vnzlIBPQBBkeaR9IuMUfmVOrQlkoC4YfPoFkX3T7A=
 github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4=
-github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI=
-github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
-github.com/go-openapi/analysis v0.17.2/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
-github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik=
-github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk=
-github.com/go-openapi/analysis v0.19.4/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk=
-github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU=
-github.com/go-openapi/analysis v0.19.10/go.mod h1:qmhS3VNFxBlquFJ0RGoDtylO9y4pgTAUNE9AEEMdlJQ=
-github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
-github.com/go-openapi/errors v0.17.2/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
-github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0=
-github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94=
-github.com/go-openapi/errors v0.19.3/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94=
-github.com/go-openapi/errors v0.19.4/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94=
-github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0=
-github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
-github.com/go-openapi/jsonpointer v0.17.2/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
-github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M=
-github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg=
 github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
 github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY=
 github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg=
-github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg=
-github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
-github.com/go-openapi/jsonreference v0.17.2/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
-github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I=
-github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc=
 github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8=
 github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg=
 github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA=
 github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo=
-github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
-github.com/go-openapi/loads v0.17.2/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
-github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
-github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU=
-github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs=
-github.com/go-openapi/loads v0.19.3/go.mod h1:YVfqhUCdahYwR3f3iiwQLhicVRvLlU/WO5WPaZvcvSI=
-github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk=
-github.com/go-openapi/loads v0.19.5/go.mod h1:dswLCAdonkRufe/gSUC3gN8nTSaB9uaS2es0x5/IbjY=
-github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA=
-github.com/go-openapi/runtime v0.18.0/go.mod h1:uI6pHuxWYTy94zZxgcwJkUWa9wbIlhteGfloI10GD4U=
-github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64=
-github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4=
-github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo=
-github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc=
-github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
-github.com/go-openapi/spec v0.17.2/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
-github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI=
-github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY=
-github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo=
-github.com/go-openapi/spec v0.19.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk=
-github.com/go-openapi/spec v0.19.7/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk=
-github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
-github.com/go-openapi/strfmt v0.17.2/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
-github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU=
-github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY=
-github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU=
-github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU=
-github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk=
-github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk=
-github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I=
-github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
-github.com/go-openapi/swag v0.17.2/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
-github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg=
-github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
 github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
-github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY=
-github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY=
 github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
 github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM=
 github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
-github.com/go-openapi/validate v0.17.2/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
-github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
-github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA=
-github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo=
-github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4=
-github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4=
 github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY=
 github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I=
-github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
-github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
-github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
 github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
@@ -556,71 +358,35 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEe
 github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
 github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
 github.com/go-test/deep v1.0.7 h1:/VSMRlnY/JSyqxQUzQLKVMAskpY/NZKFA5j2P+0pP2M=
-github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0=
-github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY=
-github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg=
-github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
-github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI=
-github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs=
-github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
-github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI=
 github.com/gobuffalo/flect v0.3.0 h1:erfPWM+K1rFNIQeRPdeEXxo8yFr/PO17lhRnS8FUrtk=
 github.com/gobuffalo/flect v0.3.0/go.mod h1:5pf3aGnsvqvCj50AVni7mJJF8ICxGZ8HomberC3pXLE=
-github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk=
-github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28=
-github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo=
-github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk=
-github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw=
-github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360=
-github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg=
-github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE=
-github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8=
 github.com/gobuffalo/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU=
 github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs=
-github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
-github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc=
-github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
-github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4=
 github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0=
 github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT85L4+VY=
-github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ=
-github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0=
 github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XEWlY=
 github.com/gobuffalo/packr/v2 v2.8.3/go.mod h1:0SahksCVcx4IMnigTjiFuyldmTrdTctXsOdiU5KwbKc=
-github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw=
 github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
 github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
 github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/godror/godror v0.24.2/go.mod h1:wZv/9vPiUib6tkoDl+AZ/QLf5YZgMravZ7jxH2eQWAE=
-github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
-github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
 github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
-github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
-github.com/gogo/protobuf v1.2.2-0.20190730201129-28a6bbf47e48/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
 github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
 github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
-github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
-github.com/golang/geo v0.0.0-20190916061304-5b978397cfec/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI=
 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
 github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ=
 github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4=
-github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
-github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
 github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
 github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
 github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
 github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
-github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -640,11 +406,8 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx
 github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
 github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
 github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
-github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/gomodule/redigo v1.8.2 h1:H5XSIre1MB5NbPYFp+i1NBbb5qN1W8Y8YAQoAYbkm8k=
-github.com/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4=
@@ -653,7 +416,6 @@ github.com/google/cel-go v0.9.0/go.mod h1:U7ayypeSkw23szu4GaQTPJGx66c20mx8JklMSx
 github.com/google/cel-go v0.12.6 h1:kjeKudqV0OygrAqA9fX6J55S8gj+Jre2tckIm5RoG4M=
 github.com/google/cel-go v0.12.6/go.mod h1:Jk7ljRzLBhkmiAwBoUxB1sZSCVBAzkqPF25olK/iRDw=
 github.com/google/cel-spec v0.6.0/go.mod h1:Nwjgxy5CbjlPrtCWjeDjUyKMl8w41YBYGjsyDdqk0xA=
-github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8=
 github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54=
 github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ=
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
@@ -677,126 +439,76 @@ github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3
 github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
 github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
 github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
-github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
-github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
 github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
 github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
-github.com/google/pprof v0.0.0-20190723021845-34ac40c74b70/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
-github.com/google/pprof v0.0.0-20200417002340-c6e0a841f49a/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
-github.com/google/pprof v0.0.0-20200507031123-427632fa3b1c/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
 github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38 h1:yAJXTCF9TqKcTiHJAE8dj7HMvPfh66eeA2JYW7eFpSE=
 github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
-github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
 github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 h1:SJ+NtwL6QaZ21U+IrK7d0gGgpjGGvd2kz+FzTHVzdqI=
 github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2/go.mod h1:Tv1PlzqC9t8wNnpPdctvtSUOPUUg4SHeE6vR1Ir2hmg=
 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
-github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
 github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
 github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
 github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0=
 github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM=
-github.com/googleapis/gnostic v0.0.0-20170426233943-68f4ded48ba9/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
-github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
-github.com/googleapis/gnostic v0.1.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
-github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU=
-github.com/googleapis/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU=
 github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
 github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA=
-github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4=
-github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
-github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
-github.com/gophercloud/gophercloud v0.6.0/go.mod h1:GICNByuaEBibcjmjvI7QvYJSZEbGkcYwAR7EZK2WMqM=
-github.com/gophercloud/gophercloud v0.10.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss=
-github.com/gophercloud/gophercloud v0.11.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gopherjs/gopherjs v0.0.0-20191106031601-ce3c9ade29de/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
 github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
-github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
-github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
 github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
 github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
-github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
 github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
 github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 github.com/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY=
 github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo=
-github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
 github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
 github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
-github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE=
 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=
 github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y=
 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho=
 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
 github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.9.4/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
-github.com/grpc-ecosystem/grpc-gateway v1.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c=
-github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0=
-github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw=
 github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo=
 github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
 github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0=
 github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks=
 github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
-github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE=
-github.com/hashicorp/consul/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU=
 github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
-github.com/hashicorp/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM=
 github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
 github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
 github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
 github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
 github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
 github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
-github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
 github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs=
 github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
-github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
-github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
 github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
 github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
 github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
-github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
 github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0=
 github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8=
 github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
-github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
-github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
 github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
-github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A=
 github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
 github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
 github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
 github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek=
 github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
 github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
 github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
 github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
-github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
 github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
 github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
 github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
@@ -805,14 +517,8 @@ github.com/hashicorp/hcl/v2 v2.16.2 h1:mpkHZh/Tv+xet3sy3F9Ld4FyI2tUpWe9x3XtPx9f1
 github.com/hashicorp/hcl/v2 v2.16.2/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng=
 github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
 github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=
 github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/memberlist v0.1.5/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
-github.com/hashicorp/memberlist v0.2.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
 github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
-github.com/hashicorp/serf v0.8.5/go.mod h1:UpNcs7fFbpKIyZaUuSW6EPiH+eZC7OuyFD+wc1oal+k=
-github.com/hashicorp/serf v0.9.0/go.mod h1:YL0HO+FifKOW2u1ke99DGVu1zhcpZzNwrLIqBC7vbYU=
 github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174 h1:WlZsjVhE8Af9IcZDGgJGQpNflI3+MJSBhsgT5PCtzBQ=
 github.com/hinshun/vt10x v0.0.0-20180616224451-1954e6464174/go.mod h1:DqJ97dSdRW1W22yXSB90986pcOyQ7r45iio1KN2ez1A=
 github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
@@ -821,8 +527,6 @@ github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq
 github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
 github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU=
 github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg=
-github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
 github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
@@ -835,33 +539,19 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt
 github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
 github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
 github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
-github.com/influxdata/flux v0.65.0/go.mod h1:BwN2XG2lMszOoquQaFdPET8FRQfrXiZsWmcMO9rkaVY=
-github.com/influxdata/influxdb v1.7.7/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY=
-github.com/influxdata/influxdb v1.8.0/go.mod h1:SIzcnsjaHRFpmlxpJ4S3NT64qtEKYweNTUMb/vh0OMQ=
-github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
-github.com/influxdata/influxql v1.1.0/go.mod h1:KpVI7okXjK6PRi3Z5B+mtKZli+R1DnZgb3N+tzevNgo=
-github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE=
-github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8=
-github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE=
-github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0=
-github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po=
 github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
 github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
 github.com/jellydator/ttlcache/v3 v3.0.1 h1:cHgCSMS7TdQcoprXnWUptJZzyFsqs18Lt8VVhRuZYVU=
 github.com/jellydator/ttlcache/v3 v3.0.1/go.mod h1:WwTaEmcXQ3MTjOm4bsZoDFiCu/hMvNWLO1w67RXz6h4=
-github.com/jessevdk/go-flags v0.0.0-20180331124232-1c38ed7ad0cc/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
 github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
 github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
 github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik=
 github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg=
 github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8=
 github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
 github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
 github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
-github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak=
-github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg=
 github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
 github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ=
 github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
@@ -869,26 +559,16 @@ github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8Hm
 github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
 github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA=
 github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4=
-github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
-github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
 github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
 github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
 github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
-github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
 github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
 github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
 github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
 github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
-github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
-github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o=
 github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
 github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
 github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
-github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
-github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0=
-github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4=
-github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA=
 github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw=
 github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk=
 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
@@ -899,15 +579,9 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW
 github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
 github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
-github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
 github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/djlyI=
 github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
-github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
-github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg=
-github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
 github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 github.com/kortschak/utter v1.0.1/go.mod h1:vSmSjbyrlKjjsL71193LmzBOKgwePk9DH6uFaWHIInc=
 github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
@@ -920,7 +594,6 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
 github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
 github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/pty v1.1.4/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
-github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA=
 github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI=
 github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw=
 github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
@@ -930,7 +603,6 @@ github.com/kubevela/pkg v1.8.1-0.20230522085329-7d5e1241a86d h1:QMmTg33lUZEfTz94
 github.com/kubevela/pkg v1.8.1-0.20230522085329-7d5e1241a86d/go.mod h1:3ZWrl2+zb5ROdC2NJPPrL/4sun4M10wYfRP/9gF9WJE=
 github.com/kubevela/workflow v0.5.1-0.20230412142834-be9e5a10baf0 h1:/ZPmjKpd/+fpCjJfNfUnE7jdESuCcZeP+fyTUAU9an0=
 github.com/kubevela/workflow v0.5.1-0.20230412142834-be9e5a10baf0/go.mod h1:0GhIWFIPP+Zt31m4Aslx9mihoyNz3HrOvCV69ljMIBo=
-github.com/kylelemons/godebug v0.0.0-20160406211939-eadb3ce320cb/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
 github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
 github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
 github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
@@ -940,37 +612,24 @@ github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq
 github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=
 github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=
 github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=
-github.com/leanovate/gopter v0.2.4/go.mod h1:gNcbPWNEWRe4lm+bycKqxUYoH5uoVje5SkOJ3uoLer8=
-github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
 github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw=
 github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
 github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
 github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE=
-github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM=
-github.com/lightstep/lightstep-tracer-go v0.18.0/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
-github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4=
-github.com/lovoo/gcloud-opentracing v0.3.0/go.mod h1:ZFqk2y38kMDDikZPAK7ynTTGuyt17nSPdS3K5e+ZTBY=
 github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
 github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
-github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
 github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
 github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY=
 github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0=
-github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
 github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc=
-github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
-github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
 github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA=
 github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
 github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI=
 github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc=
-github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE=
 github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY=
 github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI=
 github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI=
@@ -980,18 +639,12 @@ github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlW
 github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
 github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
-github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
-github.com/mattn/go-ieproxy v0.0.0-20190610004146-91bb50d98149/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc=
-github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc=
-github.com/mattn/go-ieproxy v0.0.0-20191113090002-7c0f6868bffe/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E=
 github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
-github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
 github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
 github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
@@ -999,18 +652,12 @@ github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/
 github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
 github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
 github.com/mattn/go-oci8 v0.1.1/go.mod h1:wjDx6Xm9q7dFtHJvIlrI99JytznLw5wQ4R+9mNXJwGI=
-github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
-github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
-github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
-github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
 github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
 github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
 github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
-github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
 github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI=
 github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
-github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
 github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
 github.com/matttproud/golang_protobuf_extensions v1.0.2/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
@@ -1019,12 +666,6 @@ github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfr
 github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
 github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
 github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
-github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
-github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
-github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
-github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
-github.com/minio/minio-go/v6 v6.0.49/go.mod h1:qD0lajrGW49lKZLtXKtCB4X/qkMf0a5tBvN2PaZg7Gg=
-github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
 github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
 github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4=
 github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
@@ -1040,13 +681,11 @@ github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUb
 github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
 github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
 github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/hashstructure v0.0.0-20170609045927-2bca23e0e452/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
 github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
 github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
 github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
 github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
 github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.2.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
 github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
@@ -1067,21 +706,16 @@ github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbD
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
 github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
-github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
 github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
 github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
 github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
 github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
 github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=
 github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
-github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
 github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
 github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
-github.com/mozillazg/go-cos v0.13.0/go.mod h1:Zp6DvvXn0RUOXGJ2chmWt2bLEqRAnJnS3DnAZsJsoaE=
-github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISeBAdw6E61aqQma60=
 github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de h1:D5x39vF5KCwKQaw+OC9ZPiLVHXz3UFw2+psEX+gYcto=
 github.com/mpvl/unique v0.0.0-20150818121801-cbe035fff7de/go.mod h1:kJun4WP5gFuHZgRjZUWWuH1DTxCtxbHDOIJsudS8jzY=
-github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg=
 github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
@@ -1092,13 +726,6 @@ github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J
 github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
 github.com/nacos-group/nacos-sdk-go/v2 v2.2.2 h1:FI+7vr1fvCA4jbgx36KezmP3zlU/WoP/7wAloaSd1Ew=
 github.com/nacos-group/nacos-sdk-go/v2 v2.2.2/go.mod h1:ys/1adWeKXXzbNWfRNbaFlX/t6HVLWdpsNDvmoWTw0g=
-github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg=
-github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU=
-github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k=
-github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w=
-github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
 github.com/nelsam/hel/v2 v2.3.2/go.mod h1:1ZTGfU2PFTOd5mx22i5O0Lc2GY933lQ2wb/ggy+rL3w=
 github.com/nelsam/hel/v2 v2.3.3/go.mod h1:1ZTGfU2PFTOd5mx22i5O0Lc2GY933lQ2wb/ggy+rL3w=
 github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
@@ -1115,23 +742,11 @@ github.com/oam-dev/terraform-config-inspect v0.0.0-20210418082552-fc72d929aa28 h
 github.com/oam-dev/terraform-config-inspect v0.0.0-20210418082552-fc72d929aa28/go.mod h1:Mu8i0/DdplvnjwRbAYPsc8+LRR27n/mp8VWdkN10GzE=
 github.com/oam-dev/terraform-controller v0.7.10 h1:e2STz6Od53S4Ra4+QQs65lujF50vIb6eQtTMuvvofjk=
 github.com/oam-dev/terraform-controller v0.7.10/go.mod h1:xvgChKG0pij0WEKRrX7w30SdVBPVOlRl/+Mv7+2C1cI=
-github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs=
-github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
-github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
-github.com/oklog/ulid v0.0.0-20170117200651-66bb6560562f/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
 github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
-github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
-github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
-github.com/olekukonko/tablewriter v0.0.2/go.mod h1:rSAaSIOAGT9odnlyGlUfAJaoc5w2fSBUmeGDbRWPxyQ=
 github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
 github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
 github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
 github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
 github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
@@ -1147,10 +762,6 @@ github.com/onsi/ginkgo/v2 v2.6.0/go.mod h1:63DOGlLAH8+REH8jUGdL3YpCpu7JODesutUjd
 github.com/onsi/ginkgo/v2 v2.10.0 h1:sfUl4qgLdvkChZrWCYndY2EAu9BRIw1YphNAzy1VNWs=
 github.com/onsi/ginkgo/v2 v2.10.0/go.mod h1:UDQOh5wbQUlMnkLfVaIUMtQ1Vus92oM+P2JX1aulgcE=
 github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA=
-github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
 github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
 github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
 github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
@@ -1163,7 +774,6 @@ github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2
 github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
 github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU=
 github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4=
-github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk=
 github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
 github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8=
@@ -1175,35 +785,16 @@ github.com/openkruise/rollouts v0.3.0/go.mod h1:rZvWA05fLEqfVQYLwqtSNzAbCZSzYift
 github.com/openshift/build-machinery-go v0.0.0-20211213093930-7e33a7eb4ce3/go.mod h1:b1BuldmJlbA/xYtdZvKi+7j5YGB44qJUJDZ9zwiNCfE=
 github.com/openshift/library-go v0.0.0-20230327085348-8477ec72b725 h1:GC0oekPo2BDqK+2Mv6W/VuvkaUUMFcmqp0AZDN2vWrA=
 github.com/openshift/library-go v0.0.0-20230327085348-8477ec72b725/go.mod h1:OspkL5FZZapzNcka6UkNMFD7ifLT/dWUNvtwErpRK9k=
-github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis=
-github.com/opentracing-contrib/go-stdlib v0.0.0-20190519235532-cf7a6c988dc9/go.mod h1:PLldrQSroqzH70Xl+1DQcGnefIbqsKR7UDaiux3zV+w=
-github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74=
-github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/opentracing/opentracing-go v1.0.3-0.20180606204148-bd9c31933947/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
 github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA=
-github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
-github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4=
-github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM=
 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
-github.com/paulbellamy/ratecounter v0.2.0/go.mod h1:Hfx1hDpSGoqxkVVpBi/IlYD7kChlfo5C6hzIHwPqfFE=
-github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
 github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
-github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo=
 github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
 github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
 github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
 github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac=
 github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/peterh/liner v1.0.1-0.20180619022028-8c1271fcf47f/go.mod h1:xIteQHvHuaLYG9IFj6mSxM0fCKrs34IrEQUhOYuGPHc=
 github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI=
-github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU=
-github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
 github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
 github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
 github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
@@ -1211,10 +802,7 @@ github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA=
 github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
-github.com/pkg/term v0.0.0-20180730021639-bffc007b7fd5/go.mod h1:eCbImbZ95eXtAUIbLAuAVnBnwf83mjf6QIVH8SHYwqQ=
-github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
@@ -1224,21 +812,10 @@ github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY=
 github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg=
 github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
 github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI=
-github.com/prometheus-community/prom-label-proxy v0.1.1-0.20200616110844-0fbfa11fa8f3/go.mod h1:XdjyZg7LCbCC5FADHtpgNp6kQ0W9beXVGfmcvndMj5Y=
-github.com/prometheus/alertmanager v0.18.0/go.mod h1:WcxHBl40VSPuOaqWae6l6HpnEOVRIycEJ7i9iYkadEE=
-github.com/prometheus/alertmanager v0.20.0/go.mod h1:9g2i48FAyZW6BtbsnvHtMHQXl2aVtrORKwKVCQ+nbrg=
 github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
-github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs=
 github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
 github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
 github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g=
-github.com/prometheus/client_golang v1.2.0/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U=
-github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U=
-github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og=
-github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_golang v1.6.0/go.mod h1:ZLOG9ck3JLRdB5MgO8f+lLTe83AXG6ro35rLTxvnIl4=
 github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M=
 github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
 github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
@@ -1248,21 +825,15 @@ github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQg
 github.com/prometheus/client_golang v1.15.1 h1:8tXpTmJbyH5lydzFPoxSIJ0J46jdh3tylbvM1xCv0LI=
 github.com/prometheus/client_golang v1.15.1/go.mod h1:e9yaBhRPU2pPNsZwE+JdQl0KEt1N9XgF6zxWmaC0xOk=
 github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
 github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
 github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4=
 github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w=
 github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
 github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc=
-github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA=
-github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
 github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo=
 github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
 github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
@@ -1271,31 +842,18 @@ github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJ
 github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM=
 github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc=
 github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
-github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
-github.com/prometheus/procfs v0.0.6/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=
-github.com/prometheus/procfs v0.0.11/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
 github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU=
 github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
 github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA=
 github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4=
 github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI=
 github.com/prometheus/procfs v0.9.0/go.mod h1:+pB4zwohETzFnmlpe6yd2lSc+0/46IYZRB/chUwxUZY=
-github.com/prometheus/prometheus v0.0.0-20180315085919-58e2a31db8de/go.mod h1:oAIUtOny2rjMX0OWN5vPR5/q/twIROJvdqnQKDdil/s=
-github.com/prometheus/prometheus v1.8.2-0.20200110114423-1e64d757f711/go.mod h1:7U90zPoLkWjEIQcy/rweQla82OCTUzxVHE51G3OhJbI=
-github.com/prometheus/prometheus v1.8.2-0.20200507164740-ecee9c8abfd1/go.mod h1:S5n0C6tSgdnwWshBUceRx5G1OsjLv/EeZ9t3wIfEtsY=
-github.com/prometheus/prometheus v1.8.2-0.20200609102542-5d7e3e970602/go.mod h1:CwaXafRa0mm72de2GQWtfQxjGytbSKIGivWxQvjpRZs=
 github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
 github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b h1:zd/2RNzIRkoGGMjE+YIsZ85CnDIz672JK2F3Zl4vux4=
 github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b/go.mod h1:KjY0wibdYKc4DYkerHSbguaf3JeIPGhNJBp2BNiFH78=
-github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
-github.com/retailnext/hllpp v1.0.1-0.20180308014038-101a6d2f8b52/go.mod h1:RDpi1RftBQPUCDRw6SmxeaREsAaRKnOclghuzp/WRzc=
 github.com/rivo/tview v0.0.0-20221128165837-db36428c92d9 h1:ccTgRxA37ypj3q8zB8G4k3xGPfBbIaMwrf3Yw6k50NY=
 github.com/rivo/tview v0.0.0-20221128165837-db36428c92d9/go.mod h1:YX2wUZOcJGOIycErz2s9KvDaP0jnWwRCirQMPLPpQ+Y=
 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
@@ -1305,46 +863,26 @@ github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
 github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
 github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
-github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
 github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
 github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
 github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ=
 github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog=
-github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
 github.com/rubenv/sql-migrate v1.3.1 h1:Vx+n4Du8X8VTYuXbhNxdEUoh6wiJERA0GlWocR5FrbA=
 github.com/rubenv/sql-migrate v1.3.1/go.mod h1:YzG/Vh82CwyhTFXy+Mf5ahAiiEOpAlHurg+23VEzcsk=
-github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
 github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
-github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
-github.com/samuel/go-zookeeper v0.0.0-20190810000440-0ceca61e4d75/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
-github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
-github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4=
-github.com/satori/go.uuid v0.0.0-20160603004225-b111a074d5ef/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
-github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
-github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
 github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
-github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
-github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
 github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
 github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
 github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
 github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
 github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
 github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
-github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
-github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
 github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
-github.com/shurcooL/vfsgen v0.0.0-20180825020608-02ddb050ef6b/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
-github.com/shurcooL/vfsgen v0.0.0-20181202132449-6a9ea43bcacd/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw=
 github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
-github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
 github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
 github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
@@ -1355,15 +893,11 @@ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs
 github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0=
 github.com/skeema/knownhosts v1.1.0/go.mod h1:sKFq3RD6/TKZkSWn8boUbDC7Qkgcv+8XXijpFO6roag=
 github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
-github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
 github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
 github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js=
 github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0=
-github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY=
 github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
 github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
 github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
 github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
@@ -1372,8 +906,6 @@ github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkU
 github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
 github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
 github.com/spf13/cobra v0.0.0-20180629152535-a114f312e075/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
 github.com/spf13/cobra v0.0.6/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
 github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo=
 github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk=
@@ -1384,28 +916,20 @@ github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRM
 github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
 github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
 github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
-github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
-github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
 github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
 github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
 github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns=
 github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU=
 github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8=
-github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw=
-github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
 github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
-github.com/stretchr/testify v1.2.0/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
@@ -1419,40 +943,24 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o
 github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
 github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
 github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
-github.com/thanos-io/thanos v0.11.0/go.mod h1:N/Yes7J68KqvmY+xM6J5CJqEvWIvKSR5sqGtmuD6wDc=
 github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM=
 github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
 github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
 github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
-github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
 github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
 github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
-github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
-github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
-github.com/uber/jaeger-client-go v2.20.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
-github.com/uber/jaeger-client-go v2.23.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
-github.com/uber/jaeger-client-go v2.23.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk=
-github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
 github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
-github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
-github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
 github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8=
 github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck=
 github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY=
-github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
 github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
-github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4=
 github.com/xanzy/go-gitlab v0.83.0 h1:37p0MpTPNbsTMKX/JnmJtY8Ch1sFiJzVF342+RvZEGw=
 github.com/xanzy/go-gitlab v0.83.0/go.mod h1:5ryv+MnpZStBH8I/77HuQBsMbBGANtVpLWC15qOjWAw=
 github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
 github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
-github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I=
-github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y=
 github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
 github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo=
 github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
@@ -1462,7 +970,6 @@ github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17
 github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
 github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
 github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
 github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
@@ -1479,15 +986,9 @@ github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f h1
 github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
 github.com/zclconf/go-cty v1.12.1 h1:PcupnljUm9EIvbgSHQnHhUr3fO6oFmkOrvs2BAFNXXY=
 github.com/zclconf/go-cty v1.12.1/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA=
-go.elastic.co/apm v1.5.0/go.mod h1:OdB9sPtM6Vt7oz3VXt7+KR96i9li74qrxBGHTQygFvk=
-go.elastic.co/apm/module/apmhttp v1.5.0/go.mod h1:1FbmNuyD3ddauwzgVwFB0fqY6KbZt3JkV187tGCYYhY=
-go.elastic.co/apm/module/apmot v1.5.0/go.mod h1:d2KYwhJParTpyw2WnTNy8geNlHKKFX+4oK3YLlsesWE=
-go.elastic.co/fastjson v1.0.0/go.mod h1:PmeUOMMtLHQr9ZS9J9owrAVg0FkaZDRZJEFTTGHtchs=
 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
-go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
 go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4=
 go.etcd.io/bbolt v1.3.7 h1:j+zJOnnEjF/kyHlDDgGnVL/AIqIJPq8UoB2GSNfkUfQ=
-go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg=
 go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c h1:/RwRVN9EdXAVtdHxP7Ndn/tfmM9/goiwU0QTnLBgS4w=
 go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs=
 go.etcd.io/etcd/api/v3 v3.5.5 h1:BX4JIbQ7hl7+jL+g+2j5UAr0o1bctCm6/Ct+ArBGkf0=
@@ -1510,17 +1011,7 @@ go.etcd.io/etcd/raft/v3 v3.5.5/go.mod h1:76TA48q03g1y1VpTue92jZLr9lIHKUNcYdZOOGy
 go.etcd.io/etcd/server/v3 v3.5.0/go.mod h1:3Ah5ruV+M+7RZr0+Y/5mNLwC+eQlni+mQmOVdCRJoS4=
 go.etcd.io/etcd/server/v3 v3.5.5 h1:jNjYm/9s+f9A9r6+SC4RvNaz6AqixpOvhrFdT0PvIj0=
 go.etcd.io/etcd/server/v3 v3.5.5/go.mod h1:rZ95vDw/jrvsbj9XpTqPrTAB9/kzchVdhRirySPkUBc=
-go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
-go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
-go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM=
-go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE=
-go.mongodb.org/mongo-driver v1.3.2/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE=
-go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
-go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk=
 go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
-go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
-go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
-go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
 go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
 go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
 go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc=
@@ -1575,14 +1066,10 @@ go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJP
 go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U=
 go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5 h1:+FNtrFTmVw0YZGpBGX56XDee331t6JAXeK2bcyhLOOc=
 go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o=
-go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
 go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
-go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
-go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
 go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
 go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/automaxprocs v1.2.0/go.mod h1:YfO3fm683kQpzETxlTGZhGIVmXAhaw3gxeBADbpZtnU=
 go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
 go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
 go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
@@ -1590,14 +1077,10 @@ go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ
 go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo=
 go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
 go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
-go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4=
 go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
 go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
 go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
-go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
 go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
 go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo=
 go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
 go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
@@ -1606,31 +1089,16 @@ go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
 go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
 golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
 golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
 golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -1648,29 +1116,19 @@ golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU
 golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
 golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
 golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
-golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
 golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
-golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
 golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
-golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
-golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
 golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
 golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
-golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
 golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
 golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
 golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
-golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
 golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
-golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
 golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
 golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
@@ -1681,46 +1139,29 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
 golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
 golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
 golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
-golang.org/x/net v0.0.0-20190206173232-65e2d4e15006/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
-golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
 golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
@@ -1753,9 +1194,7 @@ golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
 golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
-golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
 golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A=
@@ -1770,10 +1209,8 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1781,7 +1218,6 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
 golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -1789,58 +1225,27 @@ golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5h
 golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190425145619-16072639606e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190502175342-a43fa875dd82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190530182044-ad28b68e88f1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191113165036-4c7a9d0fe056/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1903,10 +1308,7 @@ golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
 golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
 golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.1-0.20180805044716-cb6730876b98/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -1918,11 +1320,7 @@ golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
 golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
 golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1930,56 +1328,22 @@ golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxb
 golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
 golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190118193359-16909d206f00/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
-golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
 golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
-golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-golang.org/x/tools v0.0.0-20190813034749-528a2984e271/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190918214516-5a1a30219888/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191111182352-50fa39b762bc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
-golang.org/x/tools v0.0.0-20200108203644-89082a384178/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 golang.org/x/tools v0.0.0-20200313205530-4303120df7d8/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
-golang.org/x/tools v0.0.0-20200422205258-72e4a01eba43/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20200603131246-cc40288be839/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
@@ -2002,53 +1366,27 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T
 gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY=
 gomodules.xyz/jsonpatch/v2 v2.3.0 h1:8NFhfS6gzxNqjLIYnZxg319wZ5Qjnx4m/CcX+Klzazc=
 gomodules.xyz/jsonpatch/v2 v2.3.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
-gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
-gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
-gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU=
-gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
-gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
-gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
-google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
-google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
-google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
 google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
 google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
-google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE=
-google.golang.org/api v0.26.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE=
 google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8=
 google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k=
 google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE=
 google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo=
 google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
-google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
-google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
 google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
 google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
 google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
 google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
 google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
-google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s=
-google.golang.org/genproto v0.0.0-20190716160619-c506a9f90610/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
-google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
 google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
-google.golang.org/genproto v0.0.0-20190927181202-20e1ac93f88c/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
 google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200108215221-bd8f9a0ef82f/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
-google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
 google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
 google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20200603110839-e855014d5736/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA=
 google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20201102152239-715cce707fb0/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A=
@@ -2065,23 +1403,14 @@ google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ6
 google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4=
 google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA=
 google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s=
-google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
 google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
-google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM=
 google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
 google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
 google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
-google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
 google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA=
 google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
-google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
 google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
 google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
-google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
-google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
 google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0=
 google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
@@ -2130,17 +1459,12 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8
 gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
-gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
 gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
 gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
-gopkg.in/fsnotify/fsnotify.v1 v1.4.7/go.mod h1:Fyux9zXlo4rWoMSIzpn9fDAYjalPqJ/K1qJ27s+7ltE=
-gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
 gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
 gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
-gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
 gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
 gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
 gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
@@ -2160,106 +1484,68 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20200603094226-e3079894b1e8/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
-gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
 gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
 gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0=
 gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
 helm.sh/helm/v3 v3.11.2 h1:P3cLaFxfoxaGLGJVnoPrhf1j86LC5EDINSpYSpMUkkA=
 helm.sh/helm/v3 v3.11.2/go.mod h1:Hw+09mfpDiRRKAgAIZlFkPSeOkvv7Acl5McBvQyNPVw=
-honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
-howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
-k8s.io/api v0.0.0-20190620084959-7cf5895f2711/go.mod h1:TBhBqb1AWbBQbW3XRusr7n7E4v2+5ZY8r8sAMnyFC5A=
-k8s.io/api v0.0.0-20190813020757-36bff7324fb7/go.mod h1:3Iy+myeAORNCLgjd/Xu9ebwN7Vh59Bw0vh9jhoX+V58=
-k8s.io/api v0.0.0-20191115095533-47f6de673b26/go.mod h1:iA/8arsvelvo4IDqIhX4IbjTEKBGgvsf2OraTuRtLFU=
-k8s.io/api v0.0.0-20191122220107-b5267f2975e0/go.mod h1:vYpRfxYkMrmPPSesoHEkGNHxNKTk96REAwqm/inQbs0=
-k8s.io/api v0.17.5/go.mod h1:0zV5/ungglgy2Rlm3QK8fbxkXVs+BSJWpJP/+8gUVLY=
-k8s.io/api v0.18.2/go.mod h1:SJCWI7OLzhZSvbY7U8zwNl9UA4o1fizoug34OV/2r78=
-k8s.io/api v0.18.3/go.mod h1:UOaMwERbqJMfeeeHc8XJKawj4P9TgDRnViIqqBeH2QA=
 k8s.io/api v0.22.1/go.mod h1:bh13rkTp3F1XEaLGykbyRD2QaTTzPm0e/BMd8ptFONY=
 k8s.io/api v0.23.0/go.mod h1:8wmDdLBHBNxtOIytwLstXt5E9PddnZb0GaMcqsvDBpg=
 k8s.io/api v0.24.0/go.mod h1:5Jl90IUrJHUJYEMANRURMiVvJ0g7Ax7r3R1bqO8zx8I=
 k8s.io/api v0.26.1/go.mod h1:xd/GBNgR0f707+ATNyPmQ1oyKSgndzXij81FzWGsejg=
 k8s.io/api v0.26.3 h1:emf74GIQMTik01Aum9dPP0gAypL8JTLl/lHa4V9RFSU=
 k8s.io/api v0.26.3/go.mod h1:PXsqwPMXBSBcL1lJ9CYDKy7kIReUydukS5JiRlxC3qE=
-k8s.io/apiextensions-apiserver v0.18.2/go.mod h1:q3faSnRGmYimiocj6cHQ1I3WpLqmDgJFlKL37fC4ZvY=
 k8s.io/apiextensions-apiserver v0.23.0/go.mod h1:xIFAEEDlAZgpVBl/1VSjGDmLoXAWRG40+GsWhKhAxY4=
 k8s.io/apiextensions-apiserver v0.26.1/go.mod h1:AptjOSXDGuE0JICx/Em15PaoO7buLwTs0dGleIHixSM=
 k8s.io/apiextensions-apiserver v0.26.3 h1:5PGMm3oEzdB1W/FTMgGIDmm100vn7IaUP5er36dB+YE=
 k8s.io/apiextensions-apiserver v0.26.3/go.mod h1:jdA5MdjNWGP+njw1EKMZc64xAT5fIhN6VJrElV3sfpQ=
-k8s.io/apimachinery v0.0.0-20190612205821-1799e75a0719/go.mod h1:I4A+glKBHiTgiEjQiCCQfCAIcIMFGt291SmsvcrFzJA=
-k8s.io/apimachinery v0.0.0-20190809020650-423f5d784010/go.mod h1:Waf/xTS2FGRrgXCkO5FP3XxTOWh0qLf2QhL1qFZZ/R8=
-k8s.io/apimachinery v0.0.0-20191115015347-3c7067801da2/go.mod h1:dXFS2zaQR8fyzuvRdJDHw2Aerij/yVGJSre0bZQSVJA=
-k8s.io/apimachinery v0.0.0-20191121175448-79c2a76c473a/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg=
-k8s.io/apimachinery v0.17.5/go.mod h1:ioIo1G/a+uONV7Tv+ZmCbMG1/a3kVw5YcDdncd8ugQ0=
-k8s.io/apimachinery v0.18.2/go.mod h1:9SnR/e11v5IbyPCGbvJViimtJ0SwHG4nfZFjU77ftcA=
-k8s.io/apimachinery v0.18.3/go.mod h1:OaXp26zu/5J7p0f92ASynJa1pZo06YlV9fG7BoWbCko=
 k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0=
 k8s.io/apimachinery v0.23.0/go.mod h1:fFCTTBKvKcwTPFzjlcxp91uPFZr+JA0FubU4fLzzFYc=
 k8s.io/apimachinery v0.24.0/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
 k8s.io/apimachinery v0.26.1/go.mod h1:tnPmbONNJ7ByJNz9+n9kMjNP8ON+1qoAIIC70lztu74=
 k8s.io/apimachinery v0.26.3 h1:dQx6PNETJ7nODU3XPtrwkfuubs6w7sX0M8n61zHIV/k=
 k8s.io/apimachinery v0.26.3/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I=
-k8s.io/apiserver v0.0.0-20191122221311-9d521947b1e1/go.mod h1:RbsZY5zzBIWnz4KbctZsTVjwIuOpTp4Z8oCgFHN4kZQ=
-k8s.io/apiserver v0.18.2/go.mod h1:Xbh066NqrZO8cbsoenCwyDJ1OSi8Ag8I2lezeHxzwzw=
 k8s.io/apiserver v0.23.0/go.mod h1:Cec35u/9zAepDPPFyT+UMrgqOCjgJ5qtfVJDxjZYmt4=
 k8s.io/apiserver v0.26.1/go.mod h1:wr75z634Cv+sifswE9HlAo5FQ7UoUauIICRlOE+5dCg=
 k8s.io/apiserver v0.26.3 h1:blBpv+yOiozkPH2aqClhJmJY+rp53Tgfac4SKPDJnU4=
 k8s.io/apiserver v0.26.3/go.mod h1:CJe/VoQNcXdhm67EvaVjYXxR3QyfwpceKPuPaeLibTA=
 k8s.io/cli-runtime v0.26.3 h1:3ULe0oI28xmgeLMVXIstB+ZL5CTGvWSMVMLeHxitIuc=
 k8s.io/cli-runtime v0.26.3/go.mod h1:5YEhXLV4kLt/OSy9yQwtSSNZU2Z7aTEYta1A+Jg4VC4=
-k8s.io/client-go v0.0.0-20190620085101-78d2af792bab/go.mod h1:E95RaSlHr79aHaX0aGSwcPNfygDiPKOVXdmivCIZT0k=
-k8s.io/client-go v0.0.0-20191122220542-ed16ecbdf3a0/go.mod h1:tyxNgOmR/Xi39HrlQ/9LQgiHJgBvmY7gp95o5GpBA4o=
-k8s.io/client-go v0.17.5/go.mod h1:S8uZpBpjJJdEH/fEyxcqg7Rn0P5jH+ilkgBHjriSmNo=
-k8s.io/client-go v0.18.2/go.mod h1:Xcm5wVGXX9HAA2JJ2sSBUn3tCJ+4SVlCbl2MNNv+CIU=
-k8s.io/client-go v0.18.3/go.mod h1:4a/dpQEvzAhT1BbuWW09qvIaGw6Gbu1gZYiQZIi1DMw=
 k8s.io/client-go v0.22.1/go.mod h1:BquC5A4UOo4qVDUtoc04/+Nxp1MeHcVc1HJm1KmG8kk=
 k8s.io/client-go v0.23.0/go.mod h1:hrDnpnK1mSr65lHHcUuIZIXDgEbzc7/683c6hyG4jTA=
 k8s.io/client-go v0.24.0/go.mod h1:VFPQET+cAFpYxh6Bq6f4xyMY80G6jKKktU6G0m00VDw=
 k8s.io/client-go v0.26.1/go.mod h1:IWNSglg+rQ3OcvDkhY6+QLeasV4OYHDjdqeWkDQZwGE=
 k8s.io/client-go v0.26.3 h1:k1UY+KXfkxV2ScEL3gilKcF7761xkYsSD6BC9szIu8s=
 k8s.io/client-go v0.26.3/go.mod h1:ZPNu9lm8/dbRIPAgteN30RSXea6vrCpFvq+MateTUuQ=
-k8s.io/code-generator v0.18.2/go.mod h1:+UHX5rSbxmR8kzS+FAv7um6dtYrZokQvjHpDSYRVkTc=
 k8s.io/code-generator v0.23.0/go.mod h1:vQvOhDXhuzqiVfM/YHp+dmg10WDZCchJVObc9MvowsE=
 k8s.io/code-generator v0.24.0/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w=
 k8s.io/code-generator v0.26.1/go.mod h1:OMoJ5Dqx1wgaQzKgc+ZWaZPfGjdRq/Y3WubFrZmeI3I=
 k8s.io/code-generator v0.26.3/go.mod h1:ryaiIKwfxEJEaywEzx3dhWOydpVctKYbqLajJf0O8dI=
-k8s.io/component-base v0.0.0-20191122220729-2684fb322cb9/go.mod h1:NFuUusy/X4Tk21m21tcNUihnmp4OI7lXU7/xA+rYXkc=
-k8s.io/component-base v0.18.2/go.mod h1:kqLlMuhJNHQ9lz8Z7V5bxUUtjFZnrypArGl58gmDfUM=
 k8s.io/component-base v0.23.0/go.mod h1:DHH5uiFvLC1edCpvcTDV++NKULdYYU6pR9Tt3HIKMKI=
 k8s.io/component-base v0.24.0/go.mod h1:Dgazgon0i7KYUsS8krG8muGiMVtUZxG037l1MKyXgrA=
 k8s.io/component-base v0.26.1/go.mod h1:VHrLR0b58oC035w6YQiBSbtsf0ThuSwXP+p5dD/kAWU=
 k8s.io/component-base v0.26.3 h1:oC0WMK/ggcbGDTkdcqefI4wIZRYdK3JySx9/HADpV0g=
 k8s.io/component-base v0.26.3/go.mod h1:5kj1kZYwSC6ZstHJN7oHBqcJC6yyn41eR+Sqa/mQc8E=
-k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
-k8s.io/gengo v0.0.0-20200114144118-36b2048a9120/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 k8s.io/gengo v0.0.0-20220902162205-c0856e24416d/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E=
 k8s.io/helm v2.17.0+incompatible h1:Bpn6o1wKLYqKM3+Osh8e+1/K2g/GsQJ4F4yNF2+deao=
 k8s.io/helm v2.17.0+incompatible/go.mod h1:LZzlS4LQBHfciFOurYBFkCMTaZ0D1l+p0teMg7TSULI=
-k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
-k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
-k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
-k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
 k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8=
 k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I=
 k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE=
@@ -2276,12 +1562,6 @@ k8s.io/kms v0.26.3 h1:+rC4BMeMBkH5hrfZt9WFMRrs2m3vY2rXymisNactcTY=
 k8s.io/kms v0.26.3/go.mod h1:69qGnf1NsFOQP07fBYqNLZklqEHSJF024JqYCaeVxHg=
 k8s.io/kube-aggregator v0.26.3 h1:nc4H5ymGkWPU3c9U9UM468JcmNENY/s/mDYVW3t3uRo=
 k8s.io/kube-aggregator v0.26.3/go.mod h1:SgBESB/+PfZAyceTPIanfQ7GtX9G/+mjfUbTHg3Twbo=
-k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc=
-k8s.io/kube-openapi v0.0.0-20190709113604-33be087ad058/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4=
-k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E=
-k8s.io/kube-openapi v0.0.0-20200121204235-bf4fb3bd569c/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E=
-k8s.io/kube-openapi v0.0.0-20200316234421-82d701f24f9d/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU=
-k8s.io/kube-openapi v0.0.0-20200410145947-61e04a5be9a6/go.mod h1:GRQhZsXIAJ1xR0C9bd8UpWHZ5plfAS9fzPjJuQ6JL3E=
 k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw=
 k8s.io/kube-openapi v0.0.0-20211115234752-e816edb12b65/go.mod h1:sX9MT8g7NVZM5lVL/j8QyCCJe8YSMW30QvGZWaCIDIk=
 k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk=
@@ -2291,11 +1571,6 @@ k8s.io/kubectl v0.26.3 h1:bZ5SgFyeEXw6XTc1Qji0iNdtqAC76lmeIIQULg2wNXM=
 k8s.io/kubectl v0.26.3/go.mod h1:02+gv7Qn4dupzN3fi/9OvqqdW+uG/4Zi56vc4Zmsp1g=
 k8s.io/metrics v0.26.3 h1:pHI8XtmBbGGdh7bL0s2C3v93fJfxyktHPAFsnRYnDTo=
 k8s.io/metrics v0.26.3/go.mod h1:NNnWARAAz+ZJTs75Z66fJTV7jHcVb3GtrlDszSIr3fE=
-k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0=
-k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
-k8s.io/utils v0.0.0-20191114200735-6ca3b61696b6/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
-k8s.io/utils v0.0.0-20200324210504-a9aa75ae1b89/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
-k8s.io/utils v0.0.0-20200414100711-2df71ebbae66/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 k8s.io/utils v0.0.0-20210707171843-4b05e18ac7d9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
 k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA=
@@ -2308,7 +1583,6 @@ open-cluster-management.io/api v0.10.1 h1:/qv1qfIkAVSz6RQmKGehSv6zYI34Xmb8hK7sIU
 open-cluster-management.io/api v0.10.1/go.mod h1:6BB/Y6r3hXlPjpJgDwIs6Ubxyx/kXXOg6D9Cntg1I9E=
 oras.land/oras-go v1.2.2 h1:0E9tOHUfrNH7TCDk5KU0jVBEzCqbfdyuVfGmJ7ZeRPE=
 oras.land/oras-go v1.2.2/go.mod h1:Apa81sKoZPpP7CDciE006tSZ0x3Q3+dOoBcMZ/aNxvw=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
 sigs.k8s.io/apiserver-network-proxy v0.0.30 h1:Zr5Zqd2GymcYUwijHUDEaQ1I3Dx0giTIWaD80N6j2mE=
 sigs.k8s.io/apiserver-network-proxy v0.0.30/go.mod h1:0wSWl5ohhp7kYl5XOP0w1IZSWTHhe9TojjDGityZxnc=
@@ -2333,19 +1607,12 @@ sigs.k8s.io/kustomize/api v0.12.1 h1:7YM7gW3kYBwtKvoY216ZzY+8hM+lV53LUayghNRJ0vM
 sigs.k8s.io/kustomize/api v0.12.1/go.mod h1:y3JUhimkZkR6sbLNwfJHxvo1TCLwuwm14sCYnkH6S1s=
 sigs.k8s.io/kustomize/kyaml v0.13.9 h1:Qz53EAaFFANyNgyOEJbT/yoIHygK40/ZcvU3rgry2Tk=
 sigs.k8s.io/kustomize/kyaml v0.13.9/go.mod h1:QsRbD0/KcU+wdk0/L0fIp2KLnohkVzs6fQ85/nOXac4=
-sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
-sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18=
-sigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7mRH6DGaRcixXEJXTsE=
-sigs.k8s.io/structured-merge-diff/v3 v3.0.0-20200116222232-67a7b8c61874/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
-sigs.k8s.io/structured-merge-diff/v3 v3.0.0/go.mod h1:PlARxl6Hbt/+BC80dRLi1qAmnMqwqDg62YvvVkZjemw=
 sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
 sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
 sigs.k8s.io/structured-merge-diff/v4 v4.2.0/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
 sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4=
 sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE=
 sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E=
-sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
 sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc=
 sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo=
 sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8=
-sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU=
diff --git a/pkg/appfile/appfile.go b/pkg/appfile/appfile.go
index d20cbf05..1507fd26 100644
--- a/pkg/appfile/appfile.go
+++ b/pkg/appfile/appfile.go
@@ -23,9 +23,6 @@ import (
 	"reflect"
 	"strings"
 
-	"cuelang.org/go/cue/cuecontext"
-	"cuelang.org/go/cue/format"
-	json2cue "cuelang.org/go/encoding/json"
 	"github.com/crossplane/crossplane-runtime/pkg/fieldpath"
 	"github.com/kubevela/pkg/util/slices"
 	terraformapi "github.com/oam-dev/terraform-controller/api/v1beta2"
@@ -35,7 +32,6 @@ import (
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/apimachinery/pkg/runtime/schema"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 
 	velaclient "github.com/kubevela/pkg/controller/client"
@@ -47,7 +43,6 @@ import (
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha1"
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
 	"github.com/oam-dev/kubevela/apis/types"
-	"github.com/oam-dev/kubevela/pkg/appfile/helm"
 	"github.com/oam-dev/kubevela/pkg/auth"
 	"github.com/oam-dev/kubevela/pkg/component"
 	"github.com/oam-dev/kubevela/pkg/cue/definition"
@@ -317,10 +312,6 @@ func (af *Appfile) GenerateComponentManifest(wl *Workload, mutate func(*velaproc
 	// generate context here to avoid nil pointer panic
 	wl.Ctx = NewBasicContext(ctxData, wl.Params)
 	switch wl.CapabilityCategory {
-	case types.HelmCategory:
-		return generateComponentFromHelmModule(wl, ctxData)
-	case types.KubeCategory:
-		return generateComponentFromKubeModule(wl, ctxData)
 	case types.TerraformCategory:
 		return generateComponentFromTerraformModule(wl, af.Name, af.Namespace)
 	default:
@@ -614,78 +605,6 @@ func evalWorkloadWithContext(pCtx process.Context, wl *Workload, ns, appName str
 	return compManifest, nil
 }
 
-// GenerateCUETemplate generate CUE Template from Kube module and Helm module
-func GenerateCUETemplate(wl *Workload) (string, error) {
-	var templateStr string
-	switch wl.CapabilityCategory {
-	case types.KubeCategory:
-		kubeObj := &unstructured.Unstructured{}
-
-		err := json.Unmarshal(wl.FullTemplate.Kube.Template.Raw, kubeObj)
-		if err != nil {
-			return templateStr, errors.Wrap(err, "cannot decode Kube template into K8s object")
-		}
-
-		paramValues, err := resolveKubeParameters(wl.FullTemplate.Kube.Parameters, wl.Params)
-		if err != nil {
-			return templateStr, errors.WithMessage(err, "cannot resolve parameter settings")
-		}
-		if err := setParameterValuesToKubeObj(kubeObj, paramValues); err != nil {
-			return templateStr, errors.WithMessage(err, "cannot set parameters value")
-		}
-
-		// convert structured kube obj into CUE (go ==marshal==> json ==decoder==> cue)
-		objRaw, err := kubeObj.MarshalJSON()
-		if err != nil {
-			return templateStr, errors.Wrap(err, "cannot marshal kube object")
-		}
-		cuectx := cuecontext.New()
-		expr, err := json2cue.Extract("", objRaw)
-		if err != nil {
-			return templateStr, errors.Wrap(err, "cannot extract object into CUE")
-		}
-		v := cuectx.BuildExpr(expr)
-		cueRaw, err := format.Node(v.Syntax())
-		if err != nil {
-			return templateStr, errors.Wrap(err, "cannot format CUE")
-		}
-
-		// NOTE a hack way to enable using CUE capabilities on KUBE schematic workload
-		templateStr = fmt.Sprintf(`
-output: %s`, string(cueRaw))
-	case types.HelmCategory:
-		gv, err := schema.ParseGroupVersion(wl.FullTemplate.Reference.Definition.APIVersion)
-		if err != nil {
-			return templateStr, err
-		}
-		targetWorkloadGVK := gv.WithKind(wl.FullTemplate.Reference.Definition.Kind)
-		// NOTE this is a hack way to enable using CUE module capabilities on Helm module workload
-		// construct an empty base workload according to its GVK
-		templateStr = fmt.Sprintf(`
-output: {
-	apiVersion: "%s"
-	kind: "%s"
-}`, targetWorkloadGVK.GroupVersion().String(), targetWorkloadGVK.Kind)
-	default:
-	}
-	return templateStr, nil
-}
-
-func generateComponentFromKubeModule(wl *Workload, ctxData velaprocess.ContextData) (*types.ComponentManifest, error) {
-	templateStr, err := GenerateCUETemplate(wl)
-	if err != nil {
-		return nil, err
-	}
-	wl.FullTemplate.TemplateStr = templateStr
-
-	// re-use the way CUE module generates comp & acComp
-	compManifest, err := generateComponentFromCUEModule(wl, ctxData)
-	if err != nil {
-		return nil, err
-	}
-	return compManifest, nil
-}
-
 func generateTerraformConfigurationWorkload(wl *Workload, ns string) (*unstructured.Unstructured, error) {
 	if wl.FullTemplate == nil || wl.FullTemplate.Terraform == nil || wl.FullTemplate.Terraform.Configuration == "" {
 		return nil, errors.New(errTerraformConfigurationIsNotSet)
@@ -772,37 +691,6 @@ type paramValueSetting struct {
 	FieldPaths []string
 }
 
-func resolveKubeParameters(params []common.KubeParameter, settings map[string]interface{}) (paramValueSettings, error) {
-	supported := map[string]*common.KubeParameter{}
-	for _, p := range params {
-		supported[p.Name] = p.DeepCopy()
-	}
-
-	values := make(paramValueSettings)
-	for name, v := range settings {
-		// check unsupported parameter setting
-		if supported[name] == nil {
-			return nil, errors.Errorf("unsupported parameter %q", name)
-		}
-		// construct helper map
-		values[name] = paramValueSetting{
-			Value:      v,
-			ValueType:  supported[name].ValueType,
-			FieldPaths: supported[name].FieldPaths,
-		}
-	}
-
-	// check required parameter
-	for _, p := range params {
-		if p.Required != nil && *p.Required {
-			if _, ok := values[p.Name]; !ok {
-				return nil, errors.Errorf("require parameter %q", p.Name)
-			}
-		}
-	}
-	return values, nil
-}
-
 func setParameterValuesToKubeObj(obj *unstructured.Unstructured, values paramValueSettings) error {
 	paved := fieldpath.Pave(obj.Object)
 	for paramName, v := range values {
@@ -839,35 +727,6 @@ func setParameterValuesToKubeObj(obj *unstructured.Unstructured, values paramVal
 	return nil
 }
 
-func generateComponentFromHelmModule(wl *Workload, ctxData velaprocess.ContextData) (*types.ComponentManifest, error) {
-	templateStr, err := GenerateCUETemplate(wl)
-	if err != nil {
-		return nil, err
-	}
-	wl.FullTemplate.TemplateStr = templateStr
-
-	// re-use the way CUE module generates comp & acComp
-	compManifest := &types.ComponentManifest{
-		Name:             wl.Name,
-		Namespace:        ctxData.Namespace,
-		StandardWorkload: &unstructured.Unstructured{},
-	}
-
-	if wl.FullTemplate.Reference.Type != types.AutoDetectWorkloadDefinition {
-		compManifest, err = generateComponentFromCUEModule(wl, ctxData)
-		if err != nil {
-			return nil, err
-		}
-	}
-
-	rls, repo, err := helm.RenderHelmReleaseAndHelmRepo(wl.FullTemplate.Helm, wl.Name, ctxData.AppName, ctxData.Namespace, wl.Params)
-	if err != nil {
-		return nil, err
-	}
-	compManifest.PackagedWorkloadResources = []*unstructured.Unstructured{rls, repo}
-	return compManifest, nil
-}
-
 // GenerateContextDataFromAppFile generates process context data from app file
 func GenerateContextDataFromAppFile(appfile *Appfile, wlName string) velaprocess.ContextData {
 	data := velaprocess.ContextData{
diff --git a/pkg/appfile/helm/helm.go b/pkg/appfile/helm/helm.go
deleted file mode 100644
index ac6e3956..00000000
--- a/pkg/appfile/helm/helm.go
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package helm
-
-import (
-	"encoding/json"
-	"fmt"
-	"time"
-
-	"github.com/pkg/errors"
-	apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
-
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
-	helmapi "github.com/oam-dev/kubevela/pkg/appfile/helm/flux2apis"
-	commonutil "github.com/oam-dev/kubevela/pkg/utils/common"
-)
-
-var (
-	// DefaultIntervalDuration is the interval that flux controller reconcile HelmRelease and HelmRepository
-	DefaultIntervalDuration = &metav1.Duration{Duration: 5 * time.Minute}
-)
-
-// ConstructHelmReleaseName will format helm release name in a fixed way
-func ConstructHelmReleaseName(appName, compName string) string {
-	return appName + "-" + compName
-}
-
-// RenderHelmReleaseAndHelmRepo constructs HelmRelease and HelmRepository in unstructured format
-func RenderHelmReleaseAndHelmRepo(helmSpec *common.Helm, compName, appName, ns string, values map[string]interface{}) (*unstructured.Unstructured, *unstructured.Unstructured, error) {
-	releaseSpec, repoSpec, err := decodeHelmSpec(helmSpec)
-	if err != nil {
-		return nil, nil, errors.WithMessage(err, "Helm spec is invalid")
-	}
-	if releaseSpec.Interval == nil {
-		releaseSpec.Interval = DefaultIntervalDuration
-	}
-	if repoSpec.Interval == nil {
-		repoSpec.Interval = DefaultIntervalDuration
-	}
-
-	// construct unstructured HelmRepository object
-	repoName := fmt.Sprintf("%s-%s", appName, compName)
-	helmRepo := commonutil.GenerateUnstructuredObj(repoName, ns, helmapi.HelmRepositoryGVK)
-	if err := commonutil.SetSpecObjIntoUnstructuredObj(repoSpec, helmRepo); err != nil {
-		return nil, nil, errors.Wrap(err, "cannot set spec to HelmRepository")
-	}
-
-	// construct unstructured HelmRelease object
-	rlsName := ConstructHelmReleaseName(appName, compName)
-	helmRelease := commonutil.GenerateUnstructuredObj(rlsName, ns, helmapi.HelmReleaseGVK)
-
-	// construct HelmRelease chart values
-	chartValues := map[string]interface{}{}
-	if releaseSpec.Values != nil {
-		if err := json.Unmarshal(releaseSpec.Values.Raw, &chartValues); err != nil {
-			return nil, nil, errors.Wrap(err, "cannot get chart values")
-		}
-	}
-	for k, v := range values {
-		// override values with settings from application
-		chartValues[k] = v
-	}
-	if len(chartValues) > 0 {
-		// avoid an empty map
-		vJSON, err := json.Marshal(chartValues)
-		if err != nil {
-			return nil, nil, errors.Wrap(err, "cannot get chart values")
-		}
-		releaseSpec.Values = &apiextensionsv1.JSON{Raw: vJSON}
-	}
-
-	// reference HelmRepository by HelmRelease
-	releaseSpec.Chart.Spec.SourceRef = helmapi.CrossNamespaceObjectReference{
-		Kind:      helmapi.HelmRepositoryKind,
-		Namespace: ns,
-		Name:      repoName,
-	}
-	if err := commonutil.SetSpecObjIntoUnstructuredObj(releaseSpec, helmRelease); err != nil {
-		return nil, nil, errors.Wrap(err, "cannot set spec to HelmRelease")
-	}
-
-	return helmRelease, helmRepo, nil
-}
-
-func decodeHelmSpec(h *common.Helm) (*helmapi.HelmReleaseSpec, *helmapi.HelmRepositorySpec, error) {
-	releaseSpec := &helmapi.HelmReleaseSpec{}
-	if err := json.Unmarshal(h.Release.Raw, releaseSpec); err != nil {
-		return nil, nil, errors.Wrap(err, "Helm release spec is invalid")
-	}
-	repoSpec := &helmapi.HelmRepositorySpec{}
-	if err := json.Unmarshal(h.Repository.Raw, repoSpec); err != nil {
-		return nil, nil, errors.Wrap(err, "Helm repository spec is invalid")
-	}
-	return releaseSpec, repoSpec, nil
-}
diff --git a/pkg/appfile/helm/schema.go b/pkg/appfile/helm/schema.go
deleted file mode 100644
index d9dc74c0..00000000
--- a/pkg/appfile/helm/schema.go
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package helm
-
-import (
-	"bytes"
-	"context"
-	"encoding/json"
-	"fmt"
-	"net/http"
-
-	"cuelang.org/go/cue"
-	"cuelang.org/go/cue/cuecontext"
-	"cuelang.org/go/cue/format"
-	"cuelang.org/go/encoding/openapi"
-	"cuelang.org/go/encoding/yaml"
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/pkg/errors"
-	"helm.sh/helm/v3/pkg/chart/loader"
-	"helm.sh/helm/v3/pkg/getter"
-	"helm.sh/helm/v3/pkg/repo"
-
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
-)
-
-var (
-	getters = getter.Providers{
-		getter.Provider{
-			Schemes: []string{"http", "https"},
-			New:     getter.NewHTTPGetter,
-		},
-	}
-)
-
-// GetChartValuesJSONSchema fetched the Chart bundle and get JSON schema of Values
-// file.  If the Chart provides a 'values.json.schema' file, use it directly.
-// Otherwise, try to generate a JSON schema based on the Values file.
-func GetChartValuesJSONSchema(ctx context.Context, h *common.Helm) ([]byte, error) {
-	releaseSpec, repoSpec, err := decodeHelmSpec(h)
-	if err != nil {
-		return nil, errors.WithMessage(err, "Helm spec is invalid")
-	}
-	chartSpec := releaseSpec.Chart.Spec
-	files, err := loadChartFiles(ctx, repoSpec.URL, chartSpec.Chart, chartSpec.Version)
-	if err != nil {
-		return nil, errors.WithMessage(err, "cannot load Chart files")
-	}
-	var values *loader.BufferedFile
-	for _, f := range files {
-		switch f.Name {
-		case "values.yaml", "values.yml":
-			values = f
-		case "values.schema.json":
-			// use the JSON schema file if exists
-			return f.Data, nil
-		default:
-			continue
-		}
-	}
-	if values == nil {
-		return nil, errors.New("cannot find 'values.schema.json' or 'values.yaml' file in the Chart")
-	}
-	// try to generate a schema based on Values file
-	generatedSchema, err := generateSchemaFromValues(values.Data)
-	if err != nil {
-		return nil, errors.WithMessage(err, "cannot generate schema from Values file")
-	}
-	return generatedSchema, nil
-}
-
-// generateSchemaFromValues generate OpenAPIv3 schema based on Chart Values
-// file.
-func generateSchemaFromValues(values []byte) ([]byte, error) {
-	valuesIdentifier := "values"
-	cuectx := cuecontext.New()
-	// convert Values yaml to CUE
-	file, err := yaml.Extract("", string(values))
-	if err != nil {
-		return nil, errors.Wrap(err, "cannot extract Values.yaml to CUE")
-	}
-	ins := cuectx.BuildFile(file)
-	// get the streamed CUE including the comments which will be used as
-	// 'description' in the schema
-	c, err := format.Node(ins.Value().Syntax(cue.Docs(true)), format.Simplify())
-	if err != nil {
-		return nil, errors.Wrap(err, "cannot format CUE generated from Values.yaml")
-	}
-	// cue openapi encoder only works on top-level identifier, we have to add
-	// an identifier manually
-	valuesStr := fmt.Sprintf("#%s:{\n%s\n}", valuesIdentifier, string(c))
-
-	val := cuecontext.New().CompileString(valuesStr)
-	if val.Err() != nil {
-		return nil, errors.Wrap(val.Err(), "cannot compile CUE generated from Values.yaml")
-	}
-	// generate OpenAPIv3 schema through cue openapi encoder
-	rawSchema, err := openapi.Gen(val, &openapi.Config{})
-	if err != nil {
-		return nil, errors.Wrap(err, "cannot generate OpenAPIv3 schema")
-	}
-	rawSchema, err = makeSwaggerCompatible(rawSchema)
-	if err != nil {
-		return nil, errors.WithMessage(err, "cannot make CUE-generated schema compatible with Swagger")
-	}
-
-	var out = &bytes.Buffer{}
-	_ = json.Indent(out, rawSchema, "", "   ")
-	// load schema into Swagger to validate it compatible with Swagger OpenAPIv3
-	fullSchemaBySwagger, err := openapi3.NewLoader().LoadFromData(out.Bytes())
-	if err != nil {
-		return nil, errors.Wrap(err, "cannot load schema by SwaggerLoader")
-	}
-	valuesSchema := fullSchemaBySwagger.Components.Schemas[valuesIdentifier].Value
-	changeEnumToDefault(valuesSchema)
-
-	b, err := valuesSchema.MarshalJSON()
-	if err != nil {
-		return nil, errors.Wrap(err, "cannot marshall Values schema")
-	}
-	return b, nil
-}
-
-func loadChartFiles(ctx context.Context, repoURL, chart, version string) ([]*loader.BufferedFile, error) {
-	url, err := repo.FindChartInRepoURL(repoURL, chart, version, "", "", "", getters)
-	if err != nil {
-		return nil, errors.Wrap(err, "cannot find Chart URL")
-	}
-	req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
-	if err != nil {
-		return nil, err
-	}
-	resp, err := http.DefaultClient.Do(req)
-	if err != nil {
-		return nil, errors.Wrapf(err, "cannot fetch Chart from remote URL:%s", url)
-	}
-	//nolint:errcheck
-	defer resp.Body.Close()
-	files, err := loader.LoadArchiveFiles(resp.Body)
-	if err != nil {
-		return nil, errors.Wrap(err, "cannot load Chart files")
-	}
-	return files, nil
-}
-
-// cue openapi encoder converts default in Chart Values as enum in schema
-// changing enum to default makes the schema consistent with Chart Values
-func changeEnumToDefault(schema *openapi3.Schema) {
-	t := schema.Type
-	switch t {
-	case "object":
-		for _, v := range schema.Properties {
-			s := v.Value
-			changeEnumToDefault(s)
-		}
-	case "array":
-		if schema.Items != nil {
-			changeEnumToDefault(schema.Items.Value)
-		}
-	}
-	// change enum to default
-	if len(schema.Enum) > 0 {
-		schema.Default = schema.Enum[0]
-		schema.Enum = nil
-	}
-	// remove all required fields, because fields in Values.yml are all optional
-	schema.Required = nil
-}
-
-// cue openapi encoder converts 'items' field in an array type field into array,
-// that's not compatible with OpenAPIv3. 'items' field should be an object.
-func makeSwaggerCompatible(d []byte) ([]byte, error) {
-	m := map[string]interface{}{}
-	err := json.Unmarshal(d, &m)
-	if err != nil {
-		return nil, errors.Wrap(err, "cannot unmarshall schema")
-	}
-	handleItemsOfArrayType(m)
-	b, err := json.Marshal(m)
-	if err != nil {
-		return nil, errors.Wrap(err, "cannot marshall schema")
-	}
-	return b, nil
-}
-
-// handleItemsOfArrayType will convert all 'items' of array type from array to object
-// and remove enum in the items
-func handleItemsOfArrayType(t map[string]interface{}) {
-	for _, v := range t {
-		if next, ok := v.(map[string]interface{}); ok {
-			handleItemsOfArrayType(next)
-		}
-	}
-	if t["type"] == "array" {
-		if i, ok := t["items"].([]interface{}); ok {
-			if len(i) > 0 {
-				if itemSpec, ok := i[0].(map[string]interface{}); ok {
-					handleItemsOfArrayType(itemSpec)
-					itemSpec["enum"] = nil
-					t["items"] = itemSpec
-				}
-			}
-		}
-	}
-}
diff --git a/pkg/appfile/template.go b/pkg/appfile/template.go
index ce12ae30..de77069d 100644
--- a/pkg/appfile/template.go
+++ b/pkg/appfile/template.go
@@ -54,8 +54,6 @@ type Template struct {
 	CustomStatus       string
 	CapabilityCategory types.CapabilityCategory
 	Reference          common.WorkloadTypeDescriptor
-	Helm               *common.Helm
-	Kube               *common.Kube
 	Terraform          *common.Terraform
 
 	ComponentDefinition *v1beta1.ComponentDefinition
@@ -362,16 +360,6 @@ func loadSchematicToTemplate(tmpl *Template, status *common.Status, schematic *c
 			tmpl.CapabilityCategory = types.CUECategory
 			tmpl.TemplateStr = schematic.CUE.Template
 		}
-		if schematic.HELM != nil {
-			tmpl.CapabilityCategory = types.HelmCategory
-			tmpl.Helm = schematic.HELM
-			return nil
-		}
-		if schematic.KUBE != nil {
-			tmpl.CapabilityCategory = types.KubeCategory
-			tmpl.Kube = schematic.KUBE
-			return nil
-		}
 		if schematic.Terraform != nil {
 			tmpl.CapabilityCategory = types.TerraformCategory
 			tmpl.Terraform = schematic.Terraform
diff --git a/pkg/auth/round_trippers.go b/pkg/auth/round_trippers.go
index 14e0586c..56d8cb83 100644
--- a/pkg/auth/round_trippers.go
+++ b/pkg/auth/round_trippers.go
@@ -21,12 +21,11 @@ package auth
 import (
 	"net/http"
 
+	"github.com/kubevela/pkg/util/net"
 	utilnet "k8s.io/apimachinery/pkg/util/net"
 	"k8s.io/apiserver/pkg/endpoints/request"
 	"k8s.io/client-go/transport"
 	"k8s.io/klog/v2"
-
-	"github.com/oam-dev/kubevela/pkg/utils"
 )
 
 const (
@@ -67,7 +66,7 @@ func (rt *impersonatingRoundTripper) RoundTrip(req *http.Request) (*http.Respons
 }
 
 func (rt *impersonatingRoundTripper) CancelRequest(req *http.Request) {
-	utils.TryCancelRequest(rt.WrappedRoundTripper(), req)
+	net.TryCancelRequest(rt.WrappedRoundTripper(), req)
 }
 
 func (rt *impersonatingRoundTripper) WrappedRoundTripper() http.RoundTripper {
diff --git a/pkg/controller/core.oam.dev/v1beta1/application/generator.go b/pkg/controller/core.oam.dev/v1beta1/application/generator.go
index d9df2f98..8fe7fbd7 100644
--- a/pkg/controller/core.oam.dev/v1beta1/application/generator.go
+++ b/pkg/controller/core.oam.dev/v1beta1/application/generator.go
@@ -22,23 +22,18 @@ import (
 	"strings"
 	"time"
 
-	pkgmulticluster "github.com/kubevela/pkg/multicluster"
-	utilfeature "k8s.io/apiserver/pkg/util/feature"
-
-	configprovider "github.com/oam-dev/kubevela/pkg/config/provider"
-	ctrlutil "github.com/oam-dev/kubevela/pkg/controller/utils"
-	"github.com/oam-dev/kubevela/pkg/features"
-	"github.com/oam-dev/kubevela/pkg/utils/apply"
-
 	"github.com/crossplane/crossplane-runtime/pkg/meta"
 	"github.com/pkg/errors"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
+	utilfeature "k8s.io/apiserver/pkg/util/feature"
 	"k8s.io/klog/v2"
 	"k8s.io/utils/pointer"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 
 	monitorContext "github.com/kubevela/pkg/monitor/context"
+	pkgmulticluster "github.com/kubevela/pkg/multicluster"
+	"github.com/kubevela/pkg/util/slices"
 	workflowv1alpha1 "github.com/kubevela/workflow/api/v1alpha1"
 	"github.com/kubevela/workflow/pkg/cue/model/value"
 	"github.com/kubevela/workflow/pkg/executor"
@@ -53,15 +48,17 @@ import (
 	"github.com/oam-dev/kubevela/apis/types"
 	"github.com/oam-dev/kubevela/pkg/appfile"
 	"github.com/oam-dev/kubevela/pkg/auth"
+	configprovider "github.com/oam-dev/kubevela/pkg/config/provider"
 	"github.com/oam-dev/kubevela/pkg/controller/core.oam.dev/v1beta1/application/assemble"
+	ctrlutil "github.com/oam-dev/kubevela/pkg/controller/utils"
 	velaprocess "github.com/oam-dev/kubevela/pkg/cue/process"
+	"github.com/oam-dev/kubevela/pkg/features"
 	"github.com/oam-dev/kubevela/pkg/monitor/metrics"
 	"github.com/oam-dev/kubevela/pkg/multicluster"
 	"github.com/oam-dev/kubevela/pkg/oam"
 	"github.com/oam-dev/kubevela/pkg/oam/util"
-	"github.com/oam-dev/kubevela/pkg/policy/envbinding"
 	"github.com/oam-dev/kubevela/pkg/stdlib"
-	"github.com/oam-dev/kubevela/pkg/utils"
+	"github.com/oam-dev/kubevela/pkg/utils/apply"
 	"github.com/oam-dev/kubevela/pkg/velaql/providers/query"
 	multiclusterProvider "github.com/oam-dev/kubevela/pkg/workflow/providers/multicluster"
 	oamProvider "github.com/oam-dev/kubevela/pkg/workflow/providers/oam"
@@ -308,7 +305,7 @@ func checkDependsOnValidComponent(dependsOnComponentNames, allComponentNames []s
 		return "", true
 	}
 	for _, dc := range dependsOnComponentNames {
-		if !utils.StringsContain(allComponentNames, dc) {
+		if !slices.Contains(allComponentNames, dc) {
 			return dc, false
 		}
 	}
@@ -370,7 +367,6 @@ func (h *AppHandler) applyComponentFunc(appParser *appfile.Parser, appRev *v1bet
 		ctx := multicluster.ContextWithClusterName(baseCtx, clusterName)
 		ctx = contextWithComponentNamespace(ctx, overrideNamespace)
 		ctx = contextWithReplicaKey(ctx, comp.ReplicaKey)
-		ctx = envbinding.ContextWithEnvName(ctx, env)
 
 		wl, manifest, err := h.prepareWorkloadAndManifests(ctx, appParser, comp, appRev, patcher, af)
 		if err != nil {
diff --git a/pkg/controller/utils/actions.go b/pkg/controller/utils/actions.go
deleted file mode 100644
index 6f4ebb64..00000000
--- a/pkg/controller/utils/actions.go
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package utils
-
-import (
-	"context"
-
-	"k8s.io/client-go/util/retry"
-	"sigs.k8s.io/controller-runtime/pkg/client"
-
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
-	"github.com/oam-dev/kubevela/pkg/oam"
-)
-
-// FreezeApplication freeze application to disable the reconciling process for it
-func FreezeApplication(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func()) (string, error) {
-	return oam.GetControllerRequirement(app), _updateApplicationWithControllerRequirement(ctx, cli, app, mutate, "Disabled")
-}
-
-// UnfreezeApplication unfreeze application to enable the reconciling process for it
-func UnfreezeApplication(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func(), originalControllerRequirement string) error {
-	return _updateApplicationWithControllerRequirement(ctx, cli, app, mutate, originalControllerRequirement)
-}
-
-func _updateApplicationWithControllerRequirement(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func(), controllerRequirement string) error {
-	appKey := client.ObjectKeyFromObject(app)
-	return retry.RetryOnConflict(retry.DefaultBackoff, func() error {
-		if err := cli.Get(ctx, appKey, app); err != nil {
-			return err
-		}
-		oam.SetControllerRequirement(app, controllerRequirement)
-		if mutate != nil {
-			mutate()
-		}
-		return cli.Update(ctx, app)
-	})
-}
diff --git a/pkg/controller/utils/capability.go b/pkg/controller/utils/capability.go
index 213f871f..f1210ab0 100644
--- a/pkg/controller/utils/capability.go
+++ b/pkg/controller/utils/capability.go
@@ -40,7 +40,6 @@ import (
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
 	"github.com/oam-dev/kubevela/apis/types"
 	"github.com/oam-dev/kubevela/pkg/appfile"
-	"github.com/oam-dev/kubevela/pkg/appfile/helm"
 	"github.com/oam-dev/kubevela/pkg/cue/script"
 	"github.com/oam-dev/kubevela/pkg/oam/util"
 	"github.com/oam-dev/kubevela/pkg/utils/common"
@@ -99,8 +98,6 @@ type CapabilityComponentDefinition struct {
 	WorkloadType    util.WorkloadType `json:"workloadType"`
 	WorkloadDefName string            `json:"workloadDefName"`
 
-	Helm      *commontypes.Helm      `json:"helm"`
-	Kube      *commontypes.Kube      `json:"kube"`
 	Terraform *commontypes.Terraform `json:"terraform"`
 	CapabilityBaseDefinition
 }
@@ -114,14 +111,6 @@ func NewCapabilityComponentDef(componentDefinition *v1beta1.ComponentDefinition)
 		def.WorkloadDefName = componentDefinition.Spec.Workload.Type
 	}
 	if componentDefinition.Spec.Schematic != nil {
-		if componentDefinition.Spec.Schematic.HELM != nil {
-			def.WorkloadType = util.HELMDef
-			def.Helm = componentDefinition.Spec.Schematic.HELM
-		}
-		if componentDefinition.Spec.Schematic.KUBE != nil {
-			def.WorkloadType = util.KubeDef
-			def.Kube = componentDefinition.Spec.Schematic.KUBE
-		}
 		if componentDefinition.Spec.Schematic.Terraform != nil {
 			def.WorkloadType = util.TerraformDef
 			def.Terraform = componentDefinition.Spec.Schematic.Terraform
@@ -329,37 +318,6 @@ func generateJSONSchemaWithRequiredProperty(schemas map[string]*openapi3.Schema,
 	return b, nil
 }
 
-// GetKubeSchematicOpenAPISchema gets OpenAPI v3 schema based on kube schematic parameters for component and trait definition
-func GetKubeSchematicOpenAPISchema(params []commontypes.KubeParameter) ([]byte, error) {
-	required := []string{}
-	properties := map[string]*openapi3.Schema{}
-	for _, p := range params {
-		var tmp *openapi3.Schema
-		switch p.ValueType {
-		case commontypes.StringType:
-			tmp = openapi3.NewStringSchema()
-		case commontypes.NumberType:
-			tmp = openapi3.NewFloat64Schema()
-		case commontypes.BooleanType:
-			tmp = openapi3.NewBoolSchema()
-		default:
-			tmp = openapi3.NewStringSchema()
-		}
-		if p.Required != nil && *p.Required {
-			required = append(required, p.Name)
-		}
-
-		if p.Description != nil {
-			tmp.Description = fmt.Sprintf("%s %s", tmp.Description, *p.Description)
-		} else {
-			// save FieldPaths into description
-			tmp.Description = fmt.Sprintf("The value will be applied to fields: [%s].", strings.Join(p.FieldPaths, ","))
-		}
-		properties[p.Name] = tmp
-	}
-	return generateJSONSchemaWithRequiredProperty(properties, required)
-}
-
 // GetGitSSHPublicKey gets a kubernetes secret containing the SSH private key based on gitCredentialsSecretReference parameters for component and trait definition
 func GetGitSSHPublicKey(ctx context.Context, k8sClient client.Client, gitCredentialsSecretReference *v1.SecretReference) (*gitssh.PublicKeys, error) {
 	gitCredentialsSecretName := gitCredentialsSecretReference.Name
@@ -403,10 +361,6 @@ func (def *CapabilityComponentDefinition) StoreOpenAPISchema(ctx context.Context
 	var jsonSchema []byte
 	var err error
 	switch def.WorkloadType {
-	case util.HELMDef:
-		jsonSchema, err = helm.GetChartValuesJSONSchema(ctx, def.Helm)
-	case util.KubeDef:
-		jsonSchema, err = GetKubeSchematicOpenAPISchema(def.Kube.Parameters)
 	case util.TerraformDef:
 		if def.Terraform == nil {
 			return "", fmt.Errorf("no Configuration is set in Terraform specification: %s", def.Name)
@@ -475,8 +429,6 @@ type CapabilityTraitDefinition struct {
 
 	DefCategoryType util.WorkloadType `json:"defCategoryType"`
 
-	Kube *commontypes.Kube `json:"kube"`
-
 	CapabilityBaseDefinition
 }
 
@@ -484,10 +436,6 @@ type CapabilityTraitDefinition struct {
 func NewCapabilityTraitDef(traitdefinition *v1beta1.TraitDefinition) CapabilityTraitDefinition {
 	var def CapabilityTraitDefinition
 	def.Name = traitdefinition.Name //  or def.Name = req.NamespacedName.Name
-	if traitdefinition.Spec.Schematic != nil && traitdefinition.Spec.Schematic.KUBE != nil {
-		def.DefCategoryType = util.KubeDef
-		def.Kube = traitdefinition.Spec.Schematic.KUBE
-	}
 	def.TraitDefinition = *traitdefinition.DeepCopy()
 	return def
 }
@@ -503,14 +451,7 @@ func (def *CapabilityTraitDefinition) GetOpenAPISchema(name string) ([]byte, err
 
 // StoreOpenAPISchema stores OpenAPI v3 schema from TraitDefinition in ConfigMap
 func (def *CapabilityTraitDefinition) StoreOpenAPISchema(ctx context.Context, k8sClient client.Client, namespace, name string, revName string) (string, error) {
-	var jsonSchema []byte
-	var err error
-	switch def.DefCategoryType {
-	case util.KubeDef: // Kube template
-		jsonSchema, err = GetKubeSchematicOpenAPISchema(def.Kube.Parameters)
-	default: // CUE  template
-		jsonSchema, err = def.GetOpenAPISchema(name)
-	}
+	jsonSchema, err := def.GetOpenAPISchema(name)
 	if err != nil {
 		return "", fmt.Errorf("failed to generate OpenAPI v3 JSON schema for capability %s: %w", def.Name, err)
 	}
diff --git a/pkg/controller/utils/utils.go b/pkg/controller/utils/utils.go
index 2cccf1d2..cfd50711 100644
--- a/pkg/controller/utils/utils.go
+++ b/pkg/controller/utils/utils.go
@@ -20,23 +20,13 @@ import (
 	"fmt"
 	"strconv"
 	"strings"
-	"time"
 
 	"github.com/mitchellh/hashstructure/v2"
-	"k8s.io/apimachinery/pkg/util/wait"
 
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
 	"github.com/oam-dev/kubevela/pkg/oam/util"
 )
 
-// DefaultBackoff is the backoff we use in controller
-var DefaultBackoff = wait.Backoff{
-	Duration: 1 * time.Second,
-	Factor:   2,
-	Steps:    5,
-	Jitter:   0.1,
-}
-
 // GetAppNextRevision will generate the next revision name and revision number for application
 func GetAppNextRevision(app *v1beta1.Application) (string, int64) {
 	if app == nil {
diff --git a/pkg/multicluster/cluster_management.go b/pkg/multicluster/cluster_management.go
index 6c63b339..af651a43 100644
--- a/pkg/multicluster/cluster_management.go
+++ b/pkg/multicluster/cluster_management.go
@@ -41,10 +41,7 @@ import (
 	ocmclusterv1 "open-cluster-management.io/api/cluster/v1"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
-	"github.com/oam-dev/kubevela/pkg/policy/envbinding"
 	"github.com/oam-dev/kubevela/pkg/utils"
-	velaerrors "github.com/oam-dev/kubevela/pkg/utils/errors"
 	cmdutil "github.com/oam-dev/kubevela/pkg/utils/util"
 )
 
@@ -597,25 +594,5 @@ func getMutableClusterSecret(ctx context.Context, c client.Client, clusterName s
 	if labels == nil || labels[clustercommon.LabelKeyClusterCredentialType] == "" {
 		return nil, fmt.Errorf("invalid cluster secret %s: cluster credential type label %s is not set", clusterName, clustercommon.LabelKeyClusterCredentialType)
 	}
-	apps := &v1beta1.ApplicationList{}
-	if err := c.List(ctx, apps); err != nil {
-		return nil, errors.Wrap(err, "failed to find applications to check clusters")
-	}
-	errs := velaerrors.ErrorList{}
-	for _, app := range apps.Items {
-		status, err := envbinding.GetEnvBindingPolicyStatus(app.DeepCopy(), "")
-		if err == nil && status != nil {
-			for _, env := range status.Envs {
-				for _, placement := range env.Placements {
-					if placement.Cluster == clusterName {
-						errs = append(errs, fmt.Errorf("application %s/%s (env: %s) is currently using cluster %s", app.Namespace, app.Name, env.Env, clusterName))
-					}
-				}
-			}
-		}
-	}
-	if errs.HasError() {
-		return nil, errors.Wrapf(errs, "cluster %s is in use now", clusterName)
-	}
 	return clusterSecret, nil
 }
diff --git a/pkg/policy/envbinding/patch.go b/pkg/policy/envbinding/patch.go
index 04d281dc..4f70ce00 100644
--- a/pkg/policy/envbinding/patch.go
+++ b/pkg/policy/envbinding/patch.go
@@ -18,7 +18,6 @@ package envbinding
 
 import (
 	"encoding/json"
-	"fmt"
 	"regexp"
 	"strings"
 
@@ -200,19 +199,3 @@ func PatchComponents(baseComponents []common.ApplicationComponent, patchComponen
 	}
 	return newComponents, nil
 }
-
-// PatchApplicationByEnvBindingEnv get patched application directly through policyName and envName
-func PatchApplicationByEnvBindingEnv(app *v1beta1.Application, policyName string, envName string) (*v1beta1.Application, error) {
-	policy, err := GetEnvBindingPolicy(app, policyName)
-	if err != nil {
-		return nil, err
-	}
-	if policy != nil {
-		for _, env := range policy.Envs {
-			if env.Name == envName {
-				return PatchApplication(app, &env.Patch, env.Selector)
-			}
-		}
-	}
-	return nil, fmt.Errorf("target env %s in policy %s not found", envName, policyName)
-}
diff --git a/pkg/policy/envbinding/placement.go b/pkg/policy/envbinding/placement.go
index 739f68b0..71b807a7 100644
--- a/pkg/policy/envbinding/placement.go
+++ b/pkg/policy/envbinding/placement.go
@@ -26,21 +26,6 @@ import (
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
 )
 
-// ReadPlacementDecisions read placement decisions from application status, return (decisions, if decision is made, error)
-// Deprecated As it is only used in EnvBinding policy
-func ReadPlacementDecisions(app *v1beta1.Application, policyName string, envName string) ([]v1alpha1.PlacementDecision, bool, error) {
-	envBindingStatus, err := GetEnvBindingPolicyStatus(app, policyName)
-	if err != nil || envBindingStatus == nil {
-		return nil, false, err
-	}
-	for _, envStatus := range envBindingStatus.Envs {
-		if envStatus.Env == envName {
-			return envStatus.Placements, true, nil
-		}
-	}
-	return nil, false, nil
-}
-
 // updateClusterConnections update cluster connection in envbinding status with decisions
 func updateClusterConnections(status *v1alpha1.EnvBindingStatus, decisions []v1alpha1.PlacementDecision, app *v1beta1.Application) {
 	var currentRev string
diff --git a/pkg/policy/envbinding/utils.go b/pkg/policy/envbinding/utils.go
deleted file mode 100644
index e549a7f9..00000000
--- a/pkg/policy/envbinding/utils.go
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package envbinding
-
-import (
-	"context"
-	"encoding/json"
-
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha1"
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
-)
-
-type contextKey string
-
-const (
-	// EnvNameContextKey is the name of env
-	// Deprecated
-	EnvNameContextKey = contextKey("EnvName")
-)
-
-// GetEnvBindingPolicy extract env-binding policy with given policy name, if policy name is empty, the first env-binding policy will be used
-// Deprecated
-func GetEnvBindingPolicy(app *v1beta1.Application, policyName string) (*v1alpha1.EnvBindingSpec, error) {
-	for _, policy := range app.Spec.Policies {
-		if (policy.Name == policyName || policyName == "") && policy.Type == v1alpha1.EnvBindingPolicyType && policy.Properties != nil {
-			envBindingSpec := &v1alpha1.EnvBindingSpec{}
-			err := json.Unmarshal(policy.Properties.Raw, envBindingSpec)
-			return envBindingSpec, err
-		}
-	}
-	return nil, nil
-}
-
-// GetEnvBindingPolicyStatus extract env-binding policy status with given policy name, if policy name is empty, the first env-binding policy will be used
-// Deprecated
-func GetEnvBindingPolicyStatus(app *v1beta1.Application, policyName string) (*v1alpha1.EnvBindingStatus, error) {
-	for _, policyStatus := range app.Status.PolicyStatus {
-		if (policyStatus.Name == policyName || policyName == "") && policyStatus.Type == v1alpha1.EnvBindingPolicyType {
-			envBindingStatus := &v1alpha1.EnvBindingStatus{}
-			if policyStatus.Status != nil {
-				err := json.Unmarshal(policyStatus.Status.Raw, envBindingStatus)
-				return envBindingStatus, err
-			}
-			return nil, nil
-		}
-	}
-	return nil, nil
-}
-
-// EnvNameInContext extract env name from context
-// Deprecated
-func EnvNameInContext(ctx context.Context) string {
-	envName := ctx.Value(EnvNameContextKey)
-	if envName != nil {
-		return envName.(string)
-	}
-	return ""
-}
-
-// ContextWithEnvName wraps context with envName
-// Deprecated
-func ContextWithEnvName(ctx context.Context, envName string) context.Context {
-	return context.WithValue(ctx, EnvNameContextKey, envName)
-}
diff --git a/pkg/resourcekeeper/gc.go b/pkg/resourcekeeper/gc.go
index 65ef2fdc..017bbeda 100644
--- a/pkg/resourcekeeper/gc.go
+++ b/pkg/resourcekeeper/gc.go
@@ -331,7 +331,7 @@ func (h *gcHandler) deleteIndependentComponent(ctx context.Context, mr v1beta1.M
 	} else {
 		dependentClear := true
 		for _, mr := range rt.Spec.ManagedResources {
-			if utils.StringsContain(dependent, mr.Component) {
+			if slices.Contains(dependent, mr.Component) {
 				entry := h.cache.get(ctx, mr)
 				if entry.gcExecutorRT != rt {
 					continue
@@ -435,7 +435,7 @@ func (h *gcHandler) checkDependentComponent(mr v1beta1.ManagedResource) []string
 	}
 	for _, comp := range h.app.Spec.Components {
 		for _, input := range comp.Inputs {
-			if utils.StringsContain(outputs, input.From) {
+			if slices.Contains(outputs, input.From) {
 				dependent = append(dependent, comp.Name)
 			}
 		}
diff --git a/pkg/stdlib/pkgs/multicluster.cue b/pkg/stdlib/pkgs/multicluster.cue
index dd3b4e37..21d127ce 100644
--- a/pkg/stdlib/pkgs/multicluster.cue
+++ b/pkg/stdlib/pkgs/multicluster.cue
@@ -30,21 +30,6 @@
 	dependsOn?: [...string]
 }
 
-// deprecated
-#ReadPlacementDecisions: {
-	#provider: "multicluster"
-	#do:       "read-placement-decisions"
-
-	inputs: {
-		policyName: string
-		envName:    string
-	}
-
-	outputs: {
-		decisions?: [...#PlacementDecision]
-	}
-}
-
 // deprecated
 #MakePlacementDecisions: {
 	#provider: "multicluster"
diff --git a/pkg/utils/app/app.go b/pkg/utils/app/operation.go
similarity index 77%
rename from pkg/utils/app/app.go
rename to pkg/utils/app/operation.go
index e6a5dff2..0c3af8ae 100644
--- a/pkg/utils/app/app.go
+++ b/pkg/utils/app/operation.go
@@ -84,7 +84,7 @@ func RollbackApplicationWithRevision(ctx context.Context, cli client.Client, app
 
 	// freeze the application
 	appKey := client.ObjectKeyFromObject(app)
-	controllerRequirement, err := utils.FreezeApplication(ctx, cli, app, func() {
+	controllerRequirement, err := FreezeApplication(ctx, cli, app, func() {
 		app.Spec = matchedRev.Spec.Application.Spec
 		oam.SetPublishVersion(app, publishVersion)
 	})
@@ -94,7 +94,7 @@ func RollbackApplicationWithRevision(ctx context.Context, cli client.Client, app
 
 	defer func() {
 		// unfreeze application
-		if err = utils.UnfreezeApplication(ctx, cli, app, nil, controllerRequirement); err != nil {
+		if err = UnfreezeApplication(ctx, cli, app, nil, controllerRequirement); err != nil {
 			klog.Errorf("failed to unfreeze application %s after update:%s", appKey, err.Error())
 		}
 	}()
@@ -130,3 +130,27 @@ func RollbackApplicationWithRevision(ctx context.Context, cli client.Client, app
 	}
 	return matchedRev, app, nil
 }
+
+// FreezeApplication freeze application to disable the reconciling process for it
+func FreezeApplication(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func()) (string, error) {
+	return oam.GetControllerRequirement(app), _updateApplicationWithControllerRequirement(ctx, cli, app, mutate, "Disabled")
+}
+
+// UnfreezeApplication unfreeze application to enable the reconciling process for it
+func UnfreezeApplication(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func(), originalControllerRequirement string) error {
+	return _updateApplicationWithControllerRequirement(ctx, cli, app, mutate, originalControllerRequirement)
+}
+
+func _updateApplicationWithControllerRequirement(ctx context.Context, cli client.Client, app *v1beta1.Application, mutate func(), controllerRequirement string) error {
+	appKey := client.ObjectKeyFromObject(app)
+	return retry.RetryOnConflict(retry.DefaultBackoff, func() error {
+		if err := cli.Get(ctx, appKey, app); err != nil {
+			return err
+		}
+		oam.SetControllerRequirement(app, controllerRequirement)
+		if mutate != nil {
+			mutate()
+		}
+		return cli.Update(ctx, app)
+	})
+}
diff --git a/pkg/utils/errors/resourcetracker.go b/pkg/utils/errors/resourcetracker.go
index 3654100f..1ed9b74f 100644
--- a/pkg/utils/errors/resourcetracker.go
+++ b/pkg/utils/errors/resourcetracker.go
@@ -16,20 +16,6 @@ limitations under the License.
 
 package errors
 
-import (
-	"fmt"
-)
-
-// ResourceTrackerNotExistError identifies error caused by resourcetracker not exist
-type ResourceTrackerNotExistError struct {
-	Name string
-}
-
-// Error implement error interface
-func (err ResourceTrackerNotExistError) Error() string {
-	return fmt.Sprintf("given resource tracker %q doesn't exist", err.Name)
-}
-
 // ManagedResourceHasNoDataError identifies error caused by no data in maanged resource
 type ManagedResourceHasNoDataError struct{}
 
diff --git a/pkg/utils/helm/helm.go b/pkg/utils/helm/helm.go
index 5e62af76..6ed693cf 100644
--- a/pkg/utils/helm/helm.go
+++ b/pkg/utils/helm/helm.go
@@ -19,32 +19,21 @@ package helm
 import (
 	"context"
 	"fmt"
-	"io"
 	"log"
 	"os"
-	"strings"
 
 	v1 "k8s.io/api/core/v1"
 	types2 "k8s.io/apimachinery/pkg/types"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 
-	"github.com/pkg/errors"
 	"helm.sh/helm/v3/pkg/action"
-	"helm.sh/helm/v3/pkg/chart"
-	"helm.sh/helm/v3/pkg/chart/loader"
 	"helm.sh/helm/v3/pkg/cli"
-	"helm.sh/helm/v3/pkg/getter"
 	"helm.sh/helm/v3/pkg/release"
-	"helm.sh/helm/v3/pkg/repo"
 
-	"github.com/oam-dev/kubevela/apis/types"
 	"github.com/oam-dev/kubevela/pkg/utils/common"
-	cmdutil "github.com/oam-dev/kubevela/pkg/utils/util"
 )
 
-// VelaDebugLog defines an ENV to set vela helm install log to be debug
 const (
-	VelaDebugLog       = "VELA_DEBUG"
 	userNameSecKey     = "username"
 	userPasswordSecKey = "password"
 	caFileSecKey       = "caFile"
@@ -56,138 +45,6 @@ var (
 	settings = cli.New()
 )
 
-// Install will install helm chart
-func Install(ioStreams cmdutil.IOStreams, repoName, repoURL, chartName, version, namespace, releaseName string,
-	vals map[string]interface{}) error {
-
-	if len(namespace) > 0 {
-		args, err := common.InitBaseRestConfig()
-		if err != nil {
-			return err
-		}
-		kubeClient, err := args.GetClient()
-		if err != nil {
-			return err
-		}
-		exist, err := cmdutil.DoesNamespaceExist(kubeClient, namespace)
-		if err != nil {
-			return err
-		}
-		if !exist {
-			if err = cmdutil.NewNamespace(kubeClient, namespace); err != nil {
-				return fmt.Errorf("create namespace (%s) failed for chart %s: %w", namespace, chartName, err)
-			}
-		}
-	}
-	// check release running first before add repo and install chart
-	if IsHelmReleaseRunning(releaseName, chartName, namespace, ioStreams) {
-		return nil
-	}
-
-	if !IsHelmRepositoryExist(repoName, repoURL) {
-		err := AddHelmRepository(repoName, repoURL,
-			"", "", "", "", "", false, ioStreams.Out)
-		if err != nil {
-			return err
-		}
-	}
-
-	chartClient, err := NewHelmInstall(version, namespace, releaseName)
-	if err != nil {
-		return err
-	}
-	chartRequested, err := GetChart(chartClient, repoName+"/"+chartName)
-	if err != nil {
-		return err
-	}
-	rel, err := chartClient.Run(chartRequested, vals)
-	if err != nil {
-		return err
-	}
-	ioStreams.Infof("Successfully installed chart (%s) with release name (%s)\n", chartName, rel.Name)
-	return nil
-}
-
-// Uninstall will uninstall helm chart
-func Uninstall(ioStreams cmdutil.IOStreams, chartName, namespace, releaseName string) error {
-	if !IsHelmReleaseRunning(releaseName, chartName, namespace, ioStreams) {
-		return nil
-	}
-	uninstall, err := NewHelmUninstall(namespace)
-	if err != nil {
-		return err
-	}
-	_, err = uninstall.Run(releaseName)
-	if err != nil {
-		return err
-	}
-	ioStreams.Infof("Successfully removed chart (%s) with release name (%s)\n", chartName, releaseName)
-	return nil
-}
-
-// NewHelmInstall will create a install client for helm install
-func NewHelmInstall(version, namespace, releaseName string) (*action.Install, error) {
-	actionConfig := new(action.Configuration)
-	if len(namespace) == 0 {
-		namespace = types.DefaultKubeVelaNS
-	}
-	if err := actionConfig.Init(
-		cmdutil.NewRestConfigGetter(namespace),
-		namespace,
-		os.Getenv("HELM_DRIVER"),
-		debug,
-	); err != nil {
-		return nil, err
-	}
-
-	client := action.NewInstall(actionConfig)
-	client.ReleaseName = releaseName
-	// MUST set here, client didn't use namespace from configuration
-	client.Namespace = namespace
-
-	if len(version) > 0 {
-		client.Version = version
-	} else {
-		client.Version = types.DefaultKubeVelaVersion
-	}
-	return client, nil
-}
-
-// NewHelmUninstall will create a helm uninstall client
-func NewHelmUninstall(namespace string) (*action.Uninstall, error) {
-	actionConfig := new(action.Configuration)
-
-	if err := actionConfig.Init(
-		cmdutil.NewRestConfigGetter(namespace),
-		namespace,
-		os.Getenv("HELM_DRIVER"),
-		debug,
-	); err != nil {
-		return nil, err
-	}
-	return action.NewUninstall(actionConfig), nil
-}
-
-// IsHelmRepositoryExist will check help repo exists
-func IsHelmRepositoryExist(name, url string) bool {
-	repos := GetHelmRepositoryList()
-	for _, repo := range repos {
-		if repo.Name == name && repo.URL == url {
-			return true
-		}
-	}
-	return false
-}
-
-// GetHelmRepositoryList get the helm repo list from default setting
-func GetHelmRepositoryList() []*repo.Entry {
-	f, err := repo.LoadFile(settings.RepositoryConfig)
-	if err == nil && len(f.Repositories) > 0 {
-		return f.Repositories
-	}
-	return nil
-}
-
 func debug(format string, v ...interface{}) {
 	if settings.Debug {
 		format = fmt.Sprintf("[debug] %s\n", format)
@@ -195,53 +52,6 @@ func debug(format string, v ...interface{}) {
 	}
 }
 
-// AddHelmRepository add helm repo
-func AddHelmRepository(name, url, username, password, certFile, keyFile, caFile string, insecureSkipTLSverify bool, out io.Writer) error {
-	var f repo.File
-	c := repo.Entry{
-		Name:                  name,
-		URL:                   url,
-		Username:              username,
-		Password:              password,
-		CertFile:              certFile,
-		KeyFile:               keyFile,
-		CAFile:                caFile,
-		InsecureSkipTLSverify: insecureSkipTLSverify,
-	}
-
-	r, err := repo.NewChartRepository(&c, getter.All(settings))
-	if err != nil {
-		return err
-	}
-
-	if _, err := r.DownloadIndexFile(); err != nil {
-		return errors.Wrapf(err, "looks like %q is not a valid chart repository or cannot be reached", url)
-	}
-
-	f.Update(&c)
-
-	if err := f.WriteFile(settings.RepositoryConfig, 0644); err != nil {
-		return err
-	}
-	fmt.Fprintf(out, "%q has been added to your repositories\n", name)
-	return nil
-}
-
-// IsHelmReleaseRunning check helm release running
-func IsHelmReleaseRunning(releaseName, chartName, ns string, streams cmdutil.IOStreams) bool {
-	releases, err := GetHelmRelease(ns)
-	if err != nil {
-		streams.Error("get helm release err", err)
-		return false
-	}
-	for _, r := range releases {
-		if strings.Contains(r.Chart.ChartFullPath(), chartName) && r.Name == releaseName {
-			return true
-		}
-	}
-	return false
-}
-
 // GetHelmRelease will get helm release
 func GetHelmRelease(ns string) ([]*release.Release, error) {
 	actionConfig := new(action.Configuration)
@@ -258,29 +68,6 @@ func GetHelmRelease(ns string) ([]*release.Release, error) {
 	return results, nil
 }
 
-// GetChart will locate chart
-func GetChart(client *action.Install, name string) (*chart.Chart, error) {
-	if os.Getenv(VelaDebugLog) != "" {
-		settings.Debug = true
-	}
-
-	chartPath, err := client.ChartPathOptions.LocateChart(name, settings)
-	if err != nil {
-		return nil, err
-	}
-
-	chartRequested, err := loader.Load(chartPath)
-	if err != nil {
-		return nil, err
-	}
-	return chartRequested, nil
-}
-
-// InstallHelmChart will install helm chart from types.Chart
-func InstallHelmChart(ioStreams cmdutil.IOStreams, c types.Chart) error {
-	return Install(ioStreams, c.Repo, c.URL, c.Name, c.Version, c.Namespace, c.Name, c.Values)
-}
-
 // SetHTTPOption will read username and password from secret return a httpOption that contain these info.
 func SetHTTPOption(ctx context.Context, k8sClient client.Client, secretRef types2.NamespacedName) (*common.HTTPOption, error) {
 	sec := v1.Secret{}
diff --git a/pkg/utils/json.go b/pkg/utils/json.go
index 1ccc393b..b9707812 100644
--- a/pkg/utils/json.go
+++ b/pkg/utils/json.go
@@ -21,12 +21,6 @@ import (
 	"encoding/json"
 )
 
-// DumpJSON returns the JSON encoding
-func DumpJSON(o interface{}) string {
-	j, _ := json.Marshal(o)
-	return string(j)
-}
-
 // StrictUnmarshal unmarshal target structure and disallow unknown fields
 func StrictUnmarshal(bs []byte, dest interface{}) error {
 	d := json.NewDecoder(bytes.NewReader(bs))
diff --git a/pkg/utils/k8s.go b/pkg/utils/k8s.go
index 173b94da..1bf25acd 100644
--- a/pkg/utils/k8s.go
+++ b/pkg/utils/k8s.go
@@ -185,14 +185,6 @@ func GetUserInfoFromConfig(cfg *rest.Config) *authv1.UserInfo {
 	return nil
 }
 
-// AutoSetSelfImpersonationInConfig set impersonate username and group to the identity in the original rest config
-func AutoSetSelfImpersonationInConfig(cfg *rest.Config) {
-	if userInfo := GetUserInfoFromConfig(cfg); userInfo != nil {
-		cfg.Impersonate.UserName = userInfo.Username
-		cfg.Impersonate.Groups = append(cfg.Impersonate.Groups, userInfo.Groups...)
-	}
-}
-
 // CreateOrUpdate create or update a kubernetes object
 func CreateOrUpdate(ctx context.Context, cli client.Client, obj client.Object) (controllerutil.OperationResult, error) {
 	bs, err := json.Marshal(obj)
diff --git a/pkg/utils/pprof.go b/pkg/utils/pprof.go
deleted file mode 100644
index 3ed61fda..00000000
--- a/pkg/utils/pprof.go
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-Copyright 2022 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package utils
-
-import (
-	"encoding/json"
-	"net/http"
-	"net/http/pprof"
-	"runtime"
-	"time"
-
-	"k8s.io/klog/v2"
-)
-
-// EnablePprof listen to the pprofAddr and export the profiling results
-// If the errChan is nil, this function will panic when the listening error occurred.
-func EnablePprof(pprofAddr string, errChan chan error) {
-	// Start pprof server if enabled
-	mux := http.NewServeMux()
-	mux.HandleFunc("/debug/pprof/", pprof.Index)
-	mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
-	mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
-	mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
-	mux.HandleFunc("/debug/pprof/trace", pprof.Trace)
-	mux.HandleFunc("/mem/stat", func(writer http.ResponseWriter, request *http.Request) {
-		var ms runtime.MemStats
-		runtime.ReadMemStats(&ms)
-		bs, _ := json.Marshal(ms)
-		_, _ = writer.Write(bs)
-	})
-	mux.HandleFunc("/gc", func(writer http.ResponseWriter, request *http.Request) {
-		runtime.GC()
-	})
-	pprofServer := http.Server{
-		Addr:              pprofAddr,
-		Handler:           mux,
-		ReadHeaderTimeout: 2 * time.Second,
-	}
-
-	klog.InfoS("Starting debug HTTP server", "addr", pprofServer.Addr)
-
-	if err := pprofServer.ListenAndServe(); err != nil {
-		klog.Error(err, "Failed to start debug HTTP server")
-		if errChan != nil {
-			errChan <- err
-		} else {
-			panic(err)
-		}
-	}
-}
diff --git a/pkg/utils/round_trippers.go b/pkg/utils/round_trippers.go
deleted file mode 100644
index 6003f7ca..00000000
--- a/pkg/utils/round_trippers.go
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-
- Copyright 2021 The KubeVela Authors.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-*/
-
-package utils
-
-import (
-	"net/http"
-
-	utilnet "k8s.io/apimachinery/pkg/util/net"
-	"k8s.io/klog/v2"
-)
-
-// TryCancelRequest tries to cancel the request by traversing round trippers
-func TryCancelRequest(rt http.RoundTripper, req *http.Request) {
-	type canceler interface {
-		CancelRequest(*http.Request)
-	}
-	switch rt := rt.(type) {
-	case canceler:
-		rt.CancelRequest(req)
-	case utilnet.RoundTripperWrapper:
-		TryCancelRequest(rt.WrappedRoundTripper(), req)
-	default:
-		klog.Warningf("Unable to cancel request for %T", rt)
-	}
-}
diff --git a/pkg/utils/sanitize.go b/pkg/utils/sanitize.go
deleted file mode 100644
index a65714af..00000000
--- a/pkg/utils/sanitize.go
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package utils
-
-import "strings"
-
-// Sanitize the inputs by removing line endings
-func Sanitize(s string) string {
-	s = strings.ReplaceAll(s, "\n", "")
-	s = strings.ReplaceAll(s, "\r", "")
-	return s
-}
diff --git a/pkg/utils/schema/ui_schema.go b/pkg/utils/schema/ui_schema.go
index 6f5f9a9b..7f12f684 100644
--- a/pkg/utils/schema/ui_schema.go
+++ b/pkg/utils/schema/ui_schema.go
@@ -18,9 +18,8 @@ package schema
 
 import (
 	"fmt"
-	"strings"
 
-	"github.com/oam-dev/kubevela/pkg/utils"
+	"github.com/kubevela/pkg/util/slices"
 )
 
 // UISchema ui schema
@@ -87,7 +86,7 @@ func (c Condition) Validate() error {
 	if c.Action != "enable" && c.Action != "disable" && c.Action != "" {
 		return fmt.Errorf("the action of the condition only supports enable, disable or leave it empty")
 	}
-	if c.Op != "" && !utils.StringsContain([]string{"==", "!=", "in"}, c.Op) {
+	if c.Op != "" && !slices.Contains([]string{"==", "!=", "in"}, c.Op) {
 		return fmt.Errorf("the op of the condition must be `==` 、`!=` and `in`")
 	}
 	return nil
@@ -125,22 +124,6 @@ type Option struct {
 	Value interface{} `json:"value"`
 }
 
-// FirstUpper Sets the first letter of the string to upper.
-func FirstUpper(s string) string {
-	if s == "" {
-		return ""
-	}
-	return strings.ToUpper(s[:1]) + s[1:]
-}
-
-// FirstLower  Sets the first letter of the string to lowercase.
-func FirstLower(s string) string {
-	if s == "" {
-		return ""
-	}
-	return strings.ToLower(s[:1]) + s[1:]
-}
-
 // GetDefaultUIType Set the default mapping for API Schema Type
 func GetDefaultUIType(apiType string, haveOptions bool, subType string, haveSub bool) string {
 	switch apiType {
@@ -170,15 +153,3 @@ func GetDefaultUIType(apiType string, haveOptions bool, subType string, haveSub
 		return "Input"
 	}
 }
-
-// RenderLabel render option label
-func RenderLabel(source interface{}) string {
-	switch v := source.(type) {
-	case int:
-		return fmt.Sprintf("%d", v)
-	case string:
-		return FirstUpper(v)
-	default:
-		return FirstUpper(fmt.Sprintf("%v", v))
-	}
-}
diff --git a/pkg/utils/strings.go b/pkg/utils/strings.go
index d43fb8bd..add614a6 100644
--- a/pkg/utils/strings.go
+++ b/pkg/utils/strings.go
@@ -17,128 +17,9 @@ limitations under the License.
 package utils
 
 import (
-	"net/url"
-	"path"
-	"reflect"
-	"sort"
-	"strconv"
 	"strings"
 )
 
-// StringsContain strings contain
-func StringsContain(items []string, source string) bool {
-	for _, item := range items {
-		if item == source {
-			return true
-		}
-	}
-	return false
-}
-
-// ThreeWaySliceCompare will compare two string slice, with the three return values: [both in A and B], [only in A], [only in B]
-func ThreeWaySliceCompare(a []string, b []string) ([]string, []string, []string) {
-	m := make(map[string]struct{})
-	for _, k := range b {
-		m[k] = struct{}{}
-	}
-
-	var AB, AO, BO []string
-	for _, k := range a {
-		_, ok := m[k]
-		if !ok {
-			AO = append(AO, k)
-			continue
-		}
-		AB = append(AB, k)
-		delete(m, k)
-	}
-	for k := range m {
-		BO = append(BO, k)
-	}
-	sort.Strings(AB)
-	sort.Strings(AO)
-	sort.Strings(BO)
-	return AB, AO, BO
-}
-
-// EqualSlice checks if two slice are equal
-func EqualSlice(a, b []string) bool {
-	sort.Strings(a)
-	sort.Strings(b)
-	return reflect.DeepEqual(a, b)
-}
-
-// SliceIncludeSlice the slice include the b slice
-func SliceIncludeSlice(a, b []string) bool {
-	if EqualSlice(a, b) {
-		return true
-	}
-	for _, item := range b {
-		if !StringsContain(a, item) {
-			return false
-		}
-	}
-	return true
-}
-
-// ToString convery an interface to a string type.
-func ToString(i interface{}) string {
-	if i == nil {
-		return ""
-	}
-	v := reflect.ValueOf(i)
-	if v.Kind() == reflect.Ptr && !v.IsNil() {
-		v = v.Elem()
-	}
-	i = v.Interface()
-	switch s := i.(type) {
-	case string:
-		return s
-	case bool:
-		return strconv.FormatBool(s)
-	case float64:
-		return strconv.FormatFloat(s, 'f', -1, 64)
-	case float32:
-		return strconv.FormatFloat(float64(s), 'f', -1, 32)
-	case int:
-		return strconv.Itoa(s)
-	case int64:
-		return strconv.FormatInt(s, 10)
-	case int32:
-		return strconv.Itoa(int(s))
-	case int16:
-		return strconv.FormatInt(int64(s), 10)
-	case int8:
-		return strconv.FormatInt(int64(s), 10)
-	case uint:
-		return strconv.FormatUint(uint64(s), 10)
-	case uint64:
-		// nolint
-		return strconv.FormatUint(uint64(s), 10)
-	case uint32:
-		return strconv.FormatUint(uint64(s), 10)
-	case uint16:
-		return strconv.FormatUint(uint64(s), 10)
-	case uint8:
-		return strconv.FormatUint(uint64(s), 10)
-	case []byte:
-		return string(s)
-	case nil:
-		return ""
-	default:
-		return ""
-	}
-}
-
-// MapKey2Array convery map keys to array
-func MapKey2Array(source map[string]string) []string {
-	var list []string
-	for k := range source {
-		list = append(list, k)
-	}
-	return list
-}
-
 // GetBoxDrawingString get line drawing string, see https://en.wikipedia.org/wiki/Box-drawing_character
 // nolint:gocyclo
 func GetBoxDrawingString(up bool, down bool, left bool, right bool, padLeft int, padRight int) string {
@@ -193,14 +74,9 @@ func GetBoxDrawingString(up bool, down bool, left bool, right bool, padLeft int,
 	return sb.String()
 }
 
-// JoinURL join baseURL and subPath to be new URL
-func JoinURL(baseURL, subPath string) (string, error) {
-	parsedURL, err := url.Parse(baseURL)
-	if err != nil {
-		return "", err
-	}
-	parsedURL.RawPath = path.Join(parsedURL.RawPath, subPath)
-	parsedURL.Path = path.Join(parsedURL.Path, subPath)
-	URL := parsedURL.String()
-	return URL, nil
+// Sanitize the inputs by removing line endings
+func Sanitize(s string) string {
+	s = strings.ReplaceAll(s, "\n", "")
+	s = strings.ReplaceAll(s, "\r", "")
+	return s
 }
diff --git a/pkg/utils/system/system.go b/pkg/utils/system/system.go
index c7042b16..13265513 100644
--- a/pkg/utils/system/system.go
+++ b/pkg/utils/system/system.go
@@ -54,15 +54,6 @@ func GetVelaHomeDir() (string, error) {
 	return velaHome, nil
 }
 
-// GetDefaultFrontendDir return default vela frontend dir
-func GetDefaultFrontendDir() (string, error) {
-	home, err := GetVelaHomeDir()
-	if err != nil {
-		return "", err
-	}
-	return filepath.Join(home, "frontend"), nil
-}
-
 // GetCapCenterDir return cap center dir
 func GetCapCenterDir() (string, error) {
 	home, err := GetVelaHomeDir()
diff --git a/pkg/utils/url.go b/pkg/utils/url.go
index 2579fc92..cb0f6de2 100644
--- a/pkg/utils/url.go
+++ b/pkg/utils/url.go
@@ -19,6 +19,7 @@ package utils
 import (
 	"fmt"
 	"net/url"
+	"path"
 	"regexp"
 )
 
@@ -70,3 +71,15 @@ func IsValidURL(strURL string) bool {
 	}
 	return true
 }
+
+// JoinURL join baseURL and subPath to be new URL
+func JoinURL(baseURL, subPath string) (string, error) {
+	parsedURL, err := url.Parse(baseURL)
+	if err != nil {
+		return "", err
+	}
+	parsedURL.RawPath = path.Join(parsedURL.RawPath, subPath)
+	parsedURL.Path = path.Join(parsedURL.Path, subPath)
+	URL := parsedURL.String()
+	return URL, nil
+}
diff --git a/pkg/velaql/providers/query/endpoint.go b/pkg/velaql/providers/query/endpoint.go
index 9d0fb22b..1edeab27 100644
--- a/pkg/velaql/providers/query/endpoint.go
+++ b/pkg/velaql/providers/query/endpoint.go
@@ -23,6 +23,7 @@ import (
 	"strings"
 	"time"
 
+	"github.com/kubevela/pkg/util/slices"
 	corev1 "k8s.io/api/core/v1"
 	v1 "k8s.io/api/networking/v1"
 	networkv1beta1 "k8s.io/api/networking/v1beta1"
@@ -41,7 +42,6 @@ import (
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
 	apis "github.com/oam-dev/kubevela/apis/types"
 	"github.com/oam-dev/kubevela/pkg/multicluster"
-	"github.com/oam-dev/kubevela/pkg/utils"
 	querytypes "github.com/oam-dev/kubevela/pkg/velaql/providers/query/types"
 )
 
@@ -236,7 +236,7 @@ func generatorFromIngress(ingress v1.Ingress, cluster, component string) (servic
 	getAppProtocol := func(host string) string {
 		if len(ingress.Spec.TLS) > 0 {
 			for _, tls := range ingress.Spec.TLS {
-				if len(tls.Hosts) > 0 && utils.StringsContain(tls.Hosts, host) {
+				if len(tls.Hosts) > 0 && slices.Contains(tls.Hosts, host) {
 					return querytypes.HTTPS
 				}
 				if len(tls.Hosts) == 0 {
diff --git a/pkg/workflow/operation/operation.go b/pkg/workflow/operation/operation.go
index 0d2177c4..821999c2 100644
--- a/pkg/workflow/operation/operation.go
+++ b/pkg/workflow/operation/operation.go
@@ -40,6 +40,7 @@ import (
 	"github.com/oam-dev/kubevela/pkg/oam"
 	"github.com/oam-dev/kubevela/pkg/resourcetracker"
 	"github.com/oam-dev/kubevela/pkg/rollout"
+	kubevelaapp "github.com/oam-dev/kubevela/pkg/utils/app"
 	errors3 "github.com/oam-dev/kubevela/pkg/utils/errors"
 )
 
@@ -320,7 +321,7 @@ func (wo appWorkflowOperator) Rollback(ctx context.Context) error {
 	}
 	appKey := client.ObjectKeyFromObject(app)
 	// rollback application spec and freeze
-	controllerRequirement, err := utils.FreezeApplication(ctx, wo.cli, app, func() {
+	controllerRequirement, err := kubevelaapp.FreezeApplication(ctx, wo.cli, app, func() {
 		app.Spec = rev.Spec.Application.Spec
 		oam.SetPublishVersion(app, publishVersion)
 	})
@@ -369,7 +370,7 @@ func (wo appWorkflowOperator) Rollback(ctx context.Context) error {
 	}
 
 	// unfreeze application
-	if err = utils.UnfreezeApplication(ctx, wo.cli, app, nil, controllerRequirement); err != nil {
+	if err = kubevelaapp.UnfreezeApplication(ctx, wo.cli, app, nil, controllerRequirement); err != nil {
 		return errors.Wrapf(err, "failed to resume application to restart")
 	}
 
diff --git a/pkg/workflow/providers/multicluster/multicluster.go b/pkg/workflow/providers/multicluster/multicluster.go
index 64289ab9..aefee059 100644
--- a/pkg/workflow/providers/multicluster/multicluster.go
+++ b/pkg/workflow/providers/multicluster/multicluster.go
@@ -48,27 +48,6 @@ type provider struct {
 	renderer    oamProvider.WorkloadRenderer
 }
 
-// ReadPlacementDecisions
-// Deprecated
-func (p *provider) ReadPlacementDecisions(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act wfTypes.Action) error {
-	policy, err := v.GetString("inputs", "policyName")
-	if err != nil {
-		return err
-	}
-	env, err := v.GetString("inputs", "envName")
-	if err != nil {
-		return err
-	}
-	decisions, exists, err := envbinding.ReadPlacementDecisions(p.app, policy, env)
-	if err != nil {
-		return err
-	}
-	if exists {
-		return v.FillObject(map[string]interface{}{"decisions": decisions}, "outputs")
-	}
-	return v.FillObject(map[string]interface{}{}, "outputs")
-}
-
 // MakePlacementDecisions
 // Deprecated
 func (p *provider) MakePlacementDecisions(ctx monitorContext.Context, wfCtx wfContext.Context, v *value.Value, act wfTypes.Action) error {
@@ -210,7 +189,6 @@ func (p *provider) GetPlacementsFromTopologyPolicies(ctx monitorContext.Context,
 func Install(p wfTypes.Providers, c client.Client, app *v1beta1.Application, af *appfile.Appfile, apply oamProvider.ComponentApply, healthCheck oamProvider.ComponentHealthCheck, renderer oamProvider.WorkloadRenderer) {
 	prd := &provider{Client: c, app: app, af: af, apply: apply, healthCheck: healthCheck, renderer: renderer}
 	p.Register(ProviderName, map[string]wfTypes.Handler{
-		"read-placement-decisions":              prd.ReadPlacementDecisions,
 		"make-placement-decisions":              prd.MakePlacementDecisions,
 		"patch-application":                     prd.PatchApplication,
 		"list-clusters":                         prd.ListClusters,
diff --git a/references/apis/types.go b/references/apis/types.go
deleted file mode 100644
index c78f235c..00000000
--- a/references/apis/types.go
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package apis
-
-import (
-	"k8s.io/apimachinery/pkg/runtime"
-
-	"github.com/oam-dev/kubevela/apis/types"
-)
-
-// Environment contains all info needed in `vela env` command
-type Environment struct {
-	EnvName   string `json:"envName" binding:"required,min=1,max=32"`
-	Namespace string `json:"namespace" binding:"required,min=1,max=32"`
-	Email     string `json:"email"`
-	Domain    string `json:"domain"`
-	Current   string `json:"current,omitempty"`
-}
-
-// EnvironmentBody used for restful API in dashboard server
-type EnvironmentBody struct {
-	Namespace string `json:"namespace" binding:"required,min=1,max=32"`
-}
-
-// Response used for restful API response in dashboard server
-type Response struct {
-	Code int         `json:"code"`
-	Data interface{} `json:"data" swaggerignore:"true"`
-}
-
-// CommonFlag used for restful API flags in dashboard server
-type CommonFlag struct {
-	Name  string `json:"name"`
-	Value string `json:"value"`
-}
-
-// WorkloadMeta store workload metadata for dashboard restful API server
-type WorkloadMeta struct {
-	Name        string            `json:"name"`
-	Parameters  []types.Parameter `json:"parameters,omitempty"`
-	Description string            `json:"description,omitempty"`
-}
-
-// TraitBody used to present trait which is to be attached and, of which parameters are set
-type TraitBody struct {
-	EnvName       string       `json:"envName"`
-	Name          string       `json:"name"`
-	Flags         []CommonFlag `json:"flags"`
-	ComponentName string       `json:"componentName"`
-	AppName       string       `json:"appName,omitempty"`
-	Staging       string       `json:"staging,omitempty"`
-}
-
-// ComponentMeta store component info for dashboard restful API server
-type ComponentMeta struct {
-	Name     string               `json:"name"`
-	Status   string               `json:"status,omitempty"`
-	Workload runtime.RawExtension `json:"workload,omitempty"`
-	// WorkloadName for `vela comp ls`
-	WorkloadName string `json:"workloadName,omitempty"`
-	// TraitNames for `vela comp ls`
-	TraitNames  []string `json:"traitsNames,omitempty"`
-	App         string   `json:"app"`
-	CreatedTime string   `json:"createdTime,omitempty"`
-}
-
-// ApplicationMeta used for dashboard restful API server
-type ApplicationMeta struct {
-	Name        string          `json:"name"`
-	Status      string          `json:"status,omitempty"`
-	Components  []ComponentMeta `json:"components,omitempty"`
-	CreatedTime string          `json:"createdTime,omitempty"`
-}
-
-// CapabilityMeta used for dashboard restful API server
-type CapabilityMeta struct {
-	CapabilityName       string `json:"capabilityName"`
-	CapabilityCenterName string `json:"capabilityCenterName,omitempty"`
-}
-
-// RegistryConfig is used to store registry config in file
-type RegistryConfig struct {
-	Name  string `json:"name"`
-	URL   string `json:"url"`
-	Token string `json:"token"`
-}
diff --git a/references/appfile/modify.go b/references/appfile/modify.go
index d4054226..898e0060 100644
--- a/references/appfile/modify.go
+++ b/references/appfile/modify.go
@@ -17,14 +17,8 @@ limitations under the License.
 package appfile
 
 import (
-	"encoding/json"
 	"errors"
-	"fmt"
 
-	"k8s.io/apimachinery/pkg/runtime"
-
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
 	"github.com/oam-dev/kubevela/references/appfile/api"
 )
 
@@ -47,73 +41,3 @@ func SetWorkload(app *api.Application, componentName, workloadType string, workl
 	app.Services[componentName] = s
 	return Validate(app)
 }
-
-// SetTrait will set user trait for Appfile
-func SetTrait(app *v1beta1.Application, componentName, traitType string, traitData map[string]interface{}) error {
-	if app == nil {
-		return errorAppNilPointer
-	}
-	if traitData == nil {
-		traitData = make(map[string]interface{})
-	}
-	data, err := json.Marshal(traitData)
-	if err != nil {
-		return fmt.Errorf("fail to marshal trait data %w", err)
-	}
-	var foundComp bool
-	for idx, comp := range app.Spec.Components {
-		if comp.Name != componentName {
-			continue
-		}
-		foundComp = true
-		var added bool
-		for j, tr := range app.Spec.Components[idx].Traits {
-			if tr.Type != traitType {
-				continue
-			}
-			added = true
-			if app.Spec.Components[idx].Traits[j].Properties == nil && data != nil {
-				app.Spec.Components[idx].Traits[j].Properties = &runtime.RawExtension{Raw: data}
-			} else {
-				app.Spec.Components[idx].Traits[j].Properties.Raw = data
-			}
-		}
-		if !added {
-			app.Spec.Components[idx].Traits = append(app.Spec.Components[idx].Traits, common.ApplicationTrait{Type: traitType, Properties: &runtime.RawExtension{Raw: data}})
-		}
-	}
-	if !foundComp {
-		return errors.New(componentName + " not found in app " + app.Name)
-	}
-	return nil
-}
-
-// RemoveTrait will remove a trait from Appfile
-func RemoveTrait(app *api.Application, componentName, traitType string) error {
-	if app == nil {
-		return errorAppNilPointer
-	}
-
-	s, ok := app.Services[componentName]
-	if !ok {
-		return nil
-	}
-	delete(s, traitType)
-	return nil
-}
-
-// RemoveComponent will remove component from Application
-func RemoveComponent(app *v1beta1.Application, componentName string) error {
-	if app == nil {
-		return errorAppNilPointer
-	}
-	var newComps []common.ApplicationComponent
-	for _, comp := range app.Spec.Components {
-		if comp.Name == componentName {
-			continue
-		}
-		newComps = append(newComps, comp)
-	}
-	app.Spec.Components = newComps
-	return nil
-}
diff --git a/references/cli/registry.go b/references/cli/registry.go
index 0f804552..6eb4cbfd 100644
--- a/references/cli/registry.go
+++ b/references/cli/registry.go
@@ -41,10 +41,16 @@ import (
 	"github.com/oam-dev/kubevela/pkg/utils/common"
 	"github.com/oam-dev/kubevela/pkg/utils/system"
 	cmdutil "github.com/oam-dev/kubevela/pkg/utils/util"
-	"github.com/oam-dev/kubevela/references/apis"
 	"github.com/oam-dev/kubevela/references/docgen"
 )
 
+// RegistryConfig is used to store registry config in file
+type RegistryConfig struct {
+	Name  string `json:"name"`
+	URL   string `json:"url"`
+	Token string `json:"token"`
+}
+
 // NewRegistryCommand Manage Capability Center
 func NewRegistryCommand(ioStream cmdutil.IOStreams, order string) *cobra.Command {
 	cmd := &cobra.Command{
@@ -150,7 +156,7 @@ func listCapRegistrys(ioStreams cmdutil.IOStreams) error {
 
 // addRegistry will add a registry
 func addRegistry(regName, regURL, regToken string) error {
-	regConfig := apis.RegistryConfig{
+	regConfig := RegistryConfig{
 		Name: regName, URL: regURL, Token: regToken,
 	}
 	repos, err := ListRegistryConfig()
@@ -222,7 +228,7 @@ type GithubRegistry struct {
 }
 
 // NewRegistryFromConfig return Registry interface to get capabilities
-func NewRegistryFromConfig(config apis.RegistryConfig) (Registry, error) {
+func NewRegistryFromConfig(config RegistryConfig) (Registry, error) {
 	return NewRegistry(context.TODO(), config.Token, config.Name, config.URL)
 }
 
@@ -273,9 +279,8 @@ func NewRegistry(ctx context.Context, token, registryName string, regURL string)
 
 // ListRegistryConfig will get all registry config stored in local
 // this will return at least one config, which is DefaultRegistry
-func ListRegistryConfig() ([]apis.RegistryConfig, error) {
-
-	defaultRegistryConfig := apis.RegistryConfig{Name: DefaultRegistry, URL: "oss://registry.kubevela.net/"}
+func ListRegistryConfig() ([]RegistryConfig, error) {
+	defaultRegistryConfig := RegistryConfig{Name: DefaultRegistry, URL: "oss://registry.kubevela.net/"}
 	config, err := system.GetRepoConfig()
 	if err != nil {
 		return nil, err
@@ -283,7 +288,7 @@ func ListRegistryConfig() ([]apis.RegistryConfig, error) {
 	data, err := os.ReadFile(filepath.Clean(config))
 	if err != nil {
 		if os.IsNotExist(err) {
-			err := StoreRepos([]apis.RegistryConfig{defaultRegistryConfig})
+			err := StoreRepos([]RegistryConfig{defaultRegistryConfig})
 			if err != nil {
 				return nil, errors.Wrap(err, "error initialize default registry")
 			}
@@ -291,7 +296,7 @@ func ListRegistryConfig() ([]apis.RegistryConfig, error) {
 		}
 		return nil, err
 	}
-	var regConfigs []apis.RegistryConfig
+	var regConfigs []RegistryConfig
 	if err = yaml.Unmarshal(data, &regConfigs); err != nil {
 		return nil, err
 	}
@@ -722,7 +727,7 @@ func Parse(addr string) (string, *Content, error) {
 }
 
 // StoreRepos will store registry repo locally
-func StoreRepos(registries []apis.RegistryConfig) error {
+func StoreRepos(registries []RegistryConfig) error {
 	config, err := system.GetRepoConfig()
 	if err != nil {
 		return err
diff --git a/references/cmd/cli/fake/source.go b/references/cmd/cli/fake/source.go
deleted file mode 100644
index dc83b1b6..00000000
--- a/references/cmd/cli/fake/source.go
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package fake
-
-// FrontendSource is a base64-encoded, gzipped tarball of the default Frontend Static files.
-// This whole file will be rewrite at build time.
-var FrontendSource string
diff --git a/references/common/common.go b/references/common/common.go
deleted file mode 100644
index 597916dc..00000000
--- a/references/common/common.go
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package common
diff --git a/references/common/prometheus.go b/references/common/prometheus.go
deleted file mode 100644
index f72b53f4..00000000
--- a/references/common/prometheus.go
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package common
-
-import (
-	"context"
-
-	"github.com/oam-dev/kubevela/pkg/utils/util"
-
-	monitoring "github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1"
-	corev1 "k8s.io/api/core/v1"
-	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/types"
-	"k8s.io/utils/pointer"
-	"sigs.k8s.io/controller-runtime/pkg/client"
-)
-
-// InstallPrometheusInstance will install prometheus instance when the Capability is 'metrics'
-func InstallPrometheusInstance(kubecli client.Client) error {
-	var promIns = monitoring.Prometheus{}
-	err := kubecli.Get(context.Background(), types.NamespacedName{Namespace: "monitoring", Name: "oam"}, &promIns)
-	if err == nil {
-		return nil
-	}
-	promIns.Name = "oam"
-	promIns.Namespace = "monitoring"
-	promIns.SetLabels(map[string]string{"prometheus": "kubevela"})
-	promIns.Spec = monitoring.PrometheusSpec{
-		Image:              pointer.String("quay.io/prometheus/prometheus:v2.19.2"),
-		NodeSelector:       map[string]string{"kubernetes.io/os": "linux"},
-		Replicas:           pointer.Int32(1),
-		ServiceAccountName: "kube-prometheus-stack-prometheus",
-		SecurityContext: &corev1.PodSecurityContext{
-			RunAsUser:    pointer.Int64(1000),
-			RunAsNonRoot: pointer.Bool(true),
-			FSGroup:      pointer.Int64(2000),
-		},
-		ServiceMonitorSelector: &v1.LabelSelector{MatchLabels: map[string]string{"k8s-app": "oam", "controller": "metricsTrait"}},
-		ServiceMonitorNamespaceSelector: &v1.LabelSelector{
-			MatchLabels: util.OAMLabel,
-		},
-		Version: "v2.19.2",
-	}
-	return kubecli.Create(context.Background(), &promIns)
-}
diff --git a/references/docgen/cluster.go b/references/docgen/cluster.go
index c5f618fd..a64a0513 100644
--- a/references/docgen/cluster.go
+++ b/references/docgen/cluster.go
@@ -378,12 +378,6 @@ func HandleTemplate(in *runtime.RawExtension, schematic *commontypes.Schematic,
 			tmp.Path = schematic.Terraform.Path
 			return tmp, nil
 		}
-		if schematic.KUBE != nil {
-			tmp.Category = types.KubeCategory
-			tmp.KubeTemplate = schematic.KUBE.Template
-			tmp.KubeParameter = schematic.KUBE.Parameters
-			return tmp, nil
-		}
 	}
 	if tmp.CueTemplateURI != "" {
 		b, err := common.HTTPGetWithOption(context.Background(), tmp.CueTemplateURI, nil)
@@ -393,10 +387,6 @@ func HandleTemplate(in *runtime.RawExtension, schematic *commontypes.Schematic,
 		tmp.CueTemplate = string(b)
 	}
 	if tmp.CueTemplate == "" {
-		if schematic != nil && schematic.HELM != nil {
-			tmp.Category = types.HelmCategory
-			return tmp, nil
-		}
 		return types.Capability{}, errors.New("template not exist in definition")
 	}
 	tmp.Parameters, err = cue.GetParameters(tmp.CueTemplate, pd)
diff --git a/references/docgen/console.go b/references/docgen/console.go
index 29c51de5..e764bb94 100644
--- a/references/docgen/console.go
+++ b/references/docgen/console.go
@@ -150,11 +150,6 @@ func (ref *ConsoleReference) Show(ctx context.Context, c common.Args, ioStreams
 		if err != nil {
 			return err
 		}
-	case types.HelmCategory, types.KubeCategory:
-		_, propertyConsole, err = ref.GenerateHelmAndKubeProperties(ctx, capability)
-		if err != nil {
-			return err
-		}
 	default:
 		return fmt.Errorf("unsupport capability category %s", capability.Category)
 	}
diff --git a/references/docgen/markdown.go b/references/docgen/markdown.go
index 830a4054..c5db39dc 100644
--- a/references/docgen/markdown.go
+++ b/references/docgen/markdown.go
@@ -176,14 +176,6 @@ func (ref *MarkdownReference) GenerateMarkdownForCap(ctx context.Context, c type
 				klog.Warningf("failed to get base resource kinds for %s: %v", c.Name, warnErr)
 			}
 		}
-	case types.HelmCategory, types.KubeCategory:
-		properties, _, err := ref.GenerateHelmAndKubeProperties(ctx, &c)
-		if err != nil {
-			return "", fmt.Errorf("failed to retrieve `parameters` value from %s with err: %w", c.Name, err)
-		}
-		for _, property := range properties {
-			generatedDoc += ref.getParameterString("###"+property.Name, property.Parameters, types.HelmCategory)
-		}
 	case types.TerraformCategory:
 		generatedDoc, err = ref.GenerateTerraformCapabilityPropertiesAndOutputs(c)
 		if err != nil {
@@ -319,16 +311,6 @@ func (ref *MarkdownReference) getParameterString(tableName string, parameterList
 				tab += fmt.Sprintf(" %s | %s | %s | %t | %s \n", p.Name, ref.prettySentence(p.Usage), ref.formatTableString(p.PrintableType), p.Required, printableDefaultValue)
 			}
 		}
-	case types.HelmCategory:
-		for _, p := range parameterList {
-			printableDefaultValue := ref.getJSONPrintableDefaultValue(p.JSONType, p.Default)
-			tab += fmt.Sprintf(" %s | %s | %s | %t | %s \n", p.Name, ref.prettySentence(p.Usage), ref.formatTableString(p.PrintableType), p.Required, printableDefaultValue)
-		}
-	case types.KubeCategory:
-		for _, p := range parameterList {
-			// Kube parameter doesn't have default value
-			tab += fmt.Sprintf(" %s | %s | %s | %t | %s \n", p.Name, ref.prettySentence(p.Usage), ref.formatTableString(p.PrintableType), p.Required, "")
-		}
 	case types.TerraformCategory:
 		// Terraform doesn't have default value
 		for _, p := range parameterList {
diff --git a/references/docgen/parser.go b/references/docgen/parser.go
index a978dc9b..7a803518 100644
--- a/references/docgen/parser.go
+++ b/references/docgen/parser.go
@@ -33,7 +33,6 @@ import (
 	"github.com/olekukonko/tablewriter"
 	"github.com/pkg/errors"
 	"github.com/rogpeppe/go-internal/modfile"
-	v1 "k8s.io/api/core/v1"
 	"k8s.io/apimachinery/pkg/api/meta"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime/schema"
@@ -49,7 +48,6 @@ import (
 	"github.com/oam-dev/kubevela/apis/types"
 	"github.com/oam-dev/kubevela/pkg/controller/utils"
 	velacue "github.com/oam-dev/kubevela/pkg/cue"
-	velaprocess "github.com/oam-dev/kubevela/pkg/cue/process"
 	pkgdef "github.com/oam-dev/kubevela/pkg/definition"
 	pkgUtils "github.com/oam-dev/kubevela/pkg/utils"
 	"github.com/oam-dev/kubevela/pkg/utils/common"
@@ -148,11 +146,6 @@ func (ref *ParseReference) prepareConsoleParameter(tableName string, parameterLi
 				table.Append([]string{ref.I18N.Get(p.Name), ref.prettySentence(p.Usage), ref.I18N.Get(p.PrintableType), ref.I18N.Get(strconv.FormatBool(p.Required)), ref.I18N.Get(printableDefaultValue)})
 			}
 		}
-	case types.HelmCategory, types.KubeCategory:
-		for _, p := range parameterList {
-			printableDefaultValue := ref.getJSONPrintableDefaultValue(p.JSONType, p.Default)
-			table.Append([]string{ref.I18N.Get(p.Name), ref.prettySentence(p.Usage), ref.I18N.Get(p.PrintableType), ref.I18N.Get(strconv.FormatBool(p.Required)), ref.I18N.Get(printableDefaultValue)})
-		}
 	case types.TerraformCategory:
 		// Terraform doesn't have default value
 		for _, p := range parameterList {
@@ -432,20 +425,6 @@ func (ref *ParseReference) getCUEPrintableDefaultValue(v interface{}) string {
 	return ""
 }
 
-func (ref *ParseReference) getJSONPrintableDefaultValue(dataType string, value interface{}) string {
-	if value != nil {
-		return strings.TrimSpace(fmt.Sprintf("%v", value))
-	}
-	defaultValueMap := map[string]string{
-		"number":  "0",
-		"boolean": "false",
-		"string":  "\"\"",
-		"object":  "{}",
-		"array":   "[]",
-	}
-	return defaultValueMap[dataType]
-}
-
 // CommonReference contains parameters info of HelmCategory and KubuCategory type capability at present
 type CommonReference struct {
 	Name       string
@@ -459,40 +438,6 @@ type CommonSchema struct {
 	Schemas *openapi3.Schema
 }
 
-// GenerateHelmAndKubeProperties get all properties of a Helm/Kube Category type capability
-func (ref *ParseReference) GenerateHelmAndKubeProperties(ctx context.Context, capability *types.Capability) ([]CommonReference, []ConsoleReference, error) {
-	cmName := fmt.Sprintf("%s%s", types.CapabilityConfigMapNamePrefix, capability.Name)
-	switch capability.Type {
-	case types.TypeComponentDefinition:
-		cmName = fmt.Sprintf("component-%s", cmName)
-	case types.TypeTrait:
-		cmName = fmt.Sprintf("trait-%s", cmName)
-	default:
-	}
-	var cm v1.ConfigMap
-	commonRefs = make([]CommonReference, 0)
-	if err := ref.Client.Get(ctx, client.ObjectKey{Namespace: capability.Namespace, Name: cmName}, &cm); err != nil {
-		return nil, nil, err
-	}
-	data, ok := cm.Data[types.OpenapiV3JSONSchema]
-	if !ok {
-		return nil, nil, errors.Errorf("configMap doesn't have openapi-v3-json-schema data")
-	}
-	parameterJSON := fmt.Sprintf(BaseOpenAPIV3Template, data)
-	swagger, err := openapi3.NewLoader().LoadFromData(json.RawMessage(parameterJSON))
-	if err != nil {
-		return nil, nil, err
-	}
-	parameters := swagger.Components.Schemas[velaprocess.ParameterFieldName].Value
-	WalkParameterSchema(parameters, Specification, 0)
-
-	var consoleRefs []ConsoleReference
-	for _, item := range commonRefs {
-		consoleRefs = append(consoleRefs, ref.prepareConsoleParameter(item.Name, item.Parameters, types.HelmCategory))
-	}
-	return commonRefs, consoleRefs, err
-}
-
 // GenerateTerraformCapabilityProperties generates Capability properties for Terraform ComponentDefinition
 func (ref *ParseReference) parseTerraformCapabilityParameters(capability types.Capability) ([]ReferenceParameterTable, []ReferenceParameterTable, error) {
 	var (



Test patch:
diff --git a/cmd/core/app/options/options_test.go b/cmd/core/app/options/options_test.go
index a15a446c..5da459fa 100644
--- a/cmd/core/app/options/options_test.go
+++ b/cmd/core/app/options/options_test.go
@@ -60,7 +60,6 @@ func TestCoreOptions_Flags(t *testing.T) {
 		"--max-workflow-wait-backoff-time=5",
 		"--metrics-addr=/metrics",
 		"--perf-enabled=true",
-		"--pprof-addr=/debug/pprof",
 		"--use-webhook=true",
 		"--webhook-cert-dir=/path/to/cert",
 		"--webhook-port=8080",
@@ -86,7 +85,6 @@ func TestCoreOptions_Flags(t *testing.T) {
 		InformerSyncPeriod:         3 * time.Second,
 		QPS:                        200,
 		Burst:                      500,
-		PprofAddr:                  "/debug/pprof",
 		LeaderElectionResourceLock: "/leases",
 		LeaseDuration:              3 * time.Second,
 		RenewDeadLine:              5 * time.Second,
diff --git a/e2e/plugin/plugin_suit_test.go b/e2e/plugin/plugin_suit_test.go
index d955c066..508db949 100644
--- a/e2e/plugin/plugin_suit_test.go
+++ b/e2e/plugin/plugin_suit_test.go
@@ -43,8 +43,6 @@ var app v1beta1.Application
 var testShowCdDef v1beta1.ComponentDefinition
 var testShowTdDef v1beta1.TraitDefinition
 var testCdDef v1beta1.ComponentDefinition
-var testCdDefWithHelm v1beta1.ComponentDefinition
-var testCdDefWithKube v1beta1.ComponentDefinition
 var testCdWithDeepCue v1beta1.ComponentDefinition
 var testTdDef v1beta1.TraitDefinition
 var testTdDefWithKube v1beta1.TraitDefinition
@@ -80,14 +78,6 @@ var _ = BeforeSuite(func() {
 	err = k8sClient.Create(ctx, &testCdDef)
 	Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
 
-	Expect(yaml.Unmarshal([]byte(componentDefWithHelm), &testCdDefWithHelm)).Should(BeNil())
-	err = k8sClient.Create(ctx, &testCdDefWithHelm)
-	Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
-
-	Expect(yaml.Unmarshal([]byte(componentDefWithKube), &testCdDefWithKube)).Should(BeNil())
-	err = k8sClient.Create(ctx, &testCdDefWithKube)
-	Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
-
 	Expect(yaml.Unmarshal([]byte(componentWithDeepCue), &testCdWithDeepCue)).Should(BeNil())
 	err = k8sClient.Create(ctx, &testCdWithDeepCue)
 	Expect(err).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
@@ -124,8 +114,6 @@ var _ = AfterSuite(func() {
 
 	Expect(k8sClient.Delete(ctx, &app)).Should(BeNil())
 	Expect(k8sClient.Delete(ctx, &testCdDef)).Should(BeNil())
-	Expect(k8sClient.Delete(ctx, &testCdDefWithHelm)).Should(BeNil())
-	Expect(k8sClient.Delete(ctx, &testCdDefWithKube)).Should(BeNil())
 	Expect(k8sClient.Delete(ctx, &testCdWithDeepCue)).Should(BeNil())
 	Expect(k8sClient.Delete(ctx, &testTdDef)).Should(BeNil())
 	Expect(k8sClient.Delete(ctx, &testTdDefWithKube)).Should(BeNil())
diff --git a/e2e/plugin/plugin_test.go b/e2e/plugin/plugin_test.go
index 215232d7..83f64880 100644
--- a/e2e/plugin/plugin_test.go
+++ b/e2e/plugin/plugin_test.go
@@ -131,29 +131,6 @@ var _ = Describe("Test Kubectl Plugin", func() {
 			Expect(err).NotTo(HaveOccurred())
 			Expect(output).Should(ContainSubstring(showTdResult))
 		})
-		It("Test show componentDefinition use Helm Charts as Workload", func() {
-			Eventually(func() string {
-				cdName := "test-webapp-chart"
-				output, _ := e2e.Exec(fmt.Sprintf("kubectl-vela show %s -n default", cdName))
-				return output
-			}, 20*time.Second, time.Second).Should(ContainSubstring("Specification"))
-		})
-		It("Test show componentDefinition def with raw Kube mode", func() {
-			cdName := "kube-worker"
-			output, err := e2e.Exec(fmt.Sprintf("kubectl-vela show %s -n default", cdName))
-			Expect(err).NotTo(HaveOccurred())
-			Expect(output).Should(ContainSubstring("image"))
-			Expect(output).Should(ContainSubstring("The value will be applied to fields: [spec.template.spec.containers[0].image]."))
-			Expect(output).Should(ContainSubstring("port"))
-			Expect(output).Should(ContainSubstring("the specific container port num which can accept external request."))
-		})
-		It("Test show traitDefinition def with raw Kube mode", func() {
-			tdName := "service-kube"
-			output, err := e2e.Exec(fmt.Sprintf("kubectl-vela show %s -n default", tdName))
-			Expect(err).NotTo(HaveOccurred())
-			Expect(output).Should(ContainSubstring("targetPort"))
-			Expect(output).Should(ContainSubstring("target port num for service provider."))
-		})
 		It("Test show traitDefinition def with cue single map parameter", func() {
 			tdName := "annotations"
 			output, err := e2e.Exec(fmt.Sprintf("kubectl-vela show %s -n default", tdName))
@@ -397,73 +374,6 @@ spec:
 
 `
 
-var componentDefWithHelm = `
-apiVersion: core.oam.dev/v1beta1
-kind: ComponentDefinition
-metadata:
-  name: test-webapp-chart
-  namespace: default
-  annotations:
-    definition.oam.dev/description: helm chart for webapp
-spec:
-  workload:
-    definition:
-      apiVersion: apps/v1
-      kind: Deployment
-  schematic:
-    helm:
-      release:
-        chart:
-          spec:
-            chart: "podinfo"
-            version: "5.1.4"
-      repository:
-        url: "https://charts.kubevela.net/example/"
-`
-
-var componentDefWithKube = `
-apiVersion: core.oam.dev/v1beta1
-kind: ComponentDefinition
-metadata:
-  name: kube-worker
-  namespace: default
-spec:
-  workload:
-    definition:
-      apiVersion: apps/v1
-      kind: Deployment
-  schematic:
-    kube:
-      template:
-        apiVersion: apps/v1
-        kind: Deployment
-        spec:
-          selector:
-            matchLabels:
-              app: nginx
-          template:
-            metadata:
-              labels:
-                app: nginx
-            spec:
-              containers:
-                - name: nginx
-                  ports:
-                    - containerPort: 80
-      parameters:
-        - name: image
-          required: true
-          type: string
-          fieldPaths:
-            - "spec.template.spec.containers[0].image"
-        - name: port
-          required: true
-          type: string
-          fieldPaths:
-            - "spec.template.spec.containers[0].ports[0].containerPort"
-          description: "the specific container port num which can accept external request."
-`
-
 var traitDef = `
 apiVersion: core.oam.dev/v1beta1
 kind: TraitDefinition
diff --git a/e2e/registry/registry_test.go b/e2e/registry/registry_test.go
index 3301c23d..5d68a7aa 100644
--- a/e2e/registry/registry_test.go
+++ b/e2e/registry/registry_test.go
@@ -20,14 +20,14 @@ import (
 	"fmt"
 
 	"github.com/oam-dev/kubevela/e2e"
-	"github.com/oam-dev/kubevela/references/apis"
+	"github.com/oam-dev/kubevela/references/cli"
 
 	. "github.com/onsi/ginkgo/v2"
 	. "github.com/onsi/gomega"
 )
 
 var (
-	registryConfigs = []apis.RegistryConfig{
+	registryConfigs = []cli.RegistryConfig{
 		{
 			Name:  "e2e-oss-registry",
 			URL:   "oss://registry.e2e.net",
diff --git a/pkg/appfile/appfile_test.go b/pkg/appfile/appfile_test.go
index a4ffb36a..fec17de6 100644
--- a/pkg/appfile/appfile_test.go
+++ b/pkg/appfile/appfile_test.go
@@ -19,7 +19,6 @@ package appfile
 import (
 	"context"
 	"encoding/json"
-	"fmt"
 	"testing"
 
 	"cuelang.org/go/cue/cuecontext"
@@ -35,7 +34,6 @@ import (
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
 	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/utils/pointer"
 	"sigs.k8s.io/yaml"
 
 	"github.com/kubevela/workflow/pkg/cue/model"
@@ -49,259 +47,6 @@ import (
 	"github.com/oam-dev/kubevela/pkg/oam/util"
 )
 
-var _ = Describe("Test Helm schematic appfile", func() {
-	var (
-		appName      = "test-app"
-		compName     = "test-comp"
-		workloadName = "test-workload"
-	)
-
-	It("Test generate AppConfig resources from Helm schematic", func() {
-		appFile := &Appfile{
-			Name:            appName,
-			Namespace:       "default",
-			AppRevisionName: appName + "-v1",
-			RelatedTraitDefinitions: map[string]*v1beta1.TraitDefinition{
-				"scaler": {
-					Spec: v1beta1.TraitDefinitionSpec{},
-				},
-			},
-			Workloads: []*Workload{
-				{
-					Name:               workloadName,
-					Type:               "webapp-chart",
-					CapabilityCategory: oamtypes.HelmCategory,
-					Params: map[string]interface{}{
-						"image": map[string]interface{}{
-							"tag": "5.1.2",
-						},
-					},
-					engine: definition.NewWorkloadAbstractEngine(compName, pd),
-					Traits: []*Trait{
-						{
-							Name: "scaler",
-							Params: map[string]interface{}{
-								"replicas": float64(10),
-							},
-							engine: definition.NewTraitAbstractEngine("scaler", pd),
-						},
-					},
-					FullTemplate: &Template{
-						Reference: common.WorkloadTypeDescriptor{
-							Definition: common.WorkloadGVK{
-								APIVersion: "apps/v1",
-								Kind:       "Deployment",
-							},
-						},
-						Helm: &common.Helm{
-							Release: *util.Object2RawExtension(map[string]interface{}{
-								"chart": map[string]interface{}{
-									"spec": map[string]interface{}{
-										"chart":   "podinfo",
-										"version": "5.1.4",
-									},
-								},
-							}),
-							Repository: *util.Object2RawExtension(map[string]interface{}{
-								"url": "https://charts.kubevela.net/example/",
-							}),
-						},
-					},
-				},
-			},
-		}
-		By("Generate ApplicationConfiguration and Components")
-		components, err := appFile.GenerateComponentManifests()
-		Expect(err).To(BeNil())
-
-		expectCompManifest := &oamtypes.ComponentManifest{
-			Name: workloadName,
-			StandardWorkload: &unstructured.Unstructured{
-				Object: map[string]interface{}{
-					"apiVersion": "apps/v1",
-					"kind":       "Deployment",
-					"metadata": map[string]interface{}{
-						"labels": map[string]interface{}{
-							"workload.oam.dev/type":   "webapp-chart",
-							"app.oam.dev/component":   compName,
-							"app.oam.dev/name":        appName,
-							"app.oam.dev/appRevision": appName + "-v1",
-						}}}},
-			PackagedWorkloadResources: []*unstructured.Unstructured{
-				{
-					Object: map[string]interface{}{
-						"apiVersion": "helm.toolkit.fluxcd.io/v2beta1",
-						"kind":       "HelmRelease",
-						"metadata": map[string]interface{}{
-							"name":      fmt.Sprintf("%s-%s", appName, compName),
-							"namespace": "default",
-						},
-						"spec": map[string]interface{}{
-							"chart": map[string]interface{}{
-								"spec": map[string]interface{}{
-									"sourceRef": map[string]interface{}{
-										"kind":      "HelmRepository",
-										"name":      fmt.Sprintf("%s-%s", appName, compName),
-										"namespace": "default",
-									},
-								},
-							},
-							"interval": "5m0s",
-							"values": map[string]interface{}{
-								"image": map[string]interface{}{
-									"tag": "5.1.2",
-								},
-							},
-						},
-					},
-				},
-				{
-					Object: map[string]interface{}{
-						"apiVersion": "source.toolkit.fluxcd.io/v1beta1",
-						"kind":       "HelmRepository",
-						"metadata": map[string]interface{}{
-							"name":      fmt.Sprintf("%s-%s", appName, compName),
-							"namespace": "default",
-						},
-						"spec": map[string]interface{}{
-							"url": "https://charts.kubevela.net/example/",
-						},
-					},
-				},
-			},
-		}
-		By("Verify expected ComponentManifest")
-		diff := cmp.Diff(components[0], expectCompManifest)
-		Expect(diff).ShouldNot(BeEmpty())
-	})
-
-})
-
-var _ = Describe("Test Kube schematic appfile", func() {
-	var (
-		appName  = "test-app"
-		compName = "test-comp"
-	)
-	var testTemplate = func() runtime.RawExtension {
-		yamlStr := `apiVersion: apps/v1
-kind: Deployment
-spec:
-  selector:
-    matchLabels:
-      app: nginx
-  template:
-    metadata:
-      labels:
-        app: nginx
-    spec:
-      containers:
-      - name: nginx
-      ports:
-      - containerPort: 80 `
-		b, _ := yaml.YAMLToJSON([]byte(yamlStr))
-		return runtime.RawExtension{Raw: b}
-	}
-
-	var testAppfile = func() *Appfile {
-		return &Appfile{
-			AppRevisionName: appName + "-v1",
-			Name:            appName,
-			Namespace:       "default",
-			RelatedTraitDefinitions: map[string]*v1beta1.TraitDefinition{
-				"scaler": {
-					Spec: v1beta1.TraitDefinitionSpec{},
-				},
-			},
-			Workloads: []*Workload{
-				{
-					Type:               "kube-worker",
-					CapabilityCategory: oamtypes.KubeCategory,
-					Params: map[string]interface{}{
-						"image": "nginx:1.14.0",
-					},
-					engine: definition.NewWorkloadAbstractEngine(compName, pd),
-					Traits: []*Trait{
-						{
-							Name: "scaler",
-							Params: map[string]interface{}{
-								"replicas": float64(10),
-							},
-							engine: definition.NewTraitAbstractEngine("scaler", pd),
-						},
-					},
-					FullTemplate: &Template{
-						Kube: &common.Kube{
-							Template: testTemplate(),
-							Parameters: []common.KubeParameter{
-								{
-									Name:       "image",
-									ValueType:  common.StringType,
-									Required:   pointer.Bool(true),
-									FieldPaths: []string{"spec.template.spec.containers[0].image"},
-								},
-							},
-						},
-						Reference: common.WorkloadTypeDescriptor{
-							Definition: common.WorkloadGVK{
-								APIVersion: "apps/v1",
-								Kind:       "Deployment",
-							},
-						},
-					},
-				},
-			},
-		}
-
-	}
-
-	It("Test generate AppConfig resources from Kube schematic", func() {
-		By("Generate ApplicationConfiguration and Components")
-		comps, err := testAppfile().GenerateComponentManifests()
-		Expect(err).To(BeNil())
-
-		expectWorkload := func() *unstructured.Unstructured {
-			yamlStr := `apiVersion: apps/v1
-kind: Deployment
-spec:
-  selector:
-    matchLabels:
-      app: nginx
-  template:
-    metadata:
-      labels:
-        app: nginx
-    spec:
-      containers:
-      - name: nginx
-        image: nginx:1.14.0
-      ports:
-      - containerPort: 80 `
-			r := &unstructured.Unstructured{}
-			_ = yaml.Unmarshal([]byte(yamlStr), r)
-			return r
-		}()
-
-		expectCompManifest := &oamtypes.ComponentManifest{
-			Name:             compName,
-			StandardWorkload: expectWorkload,
-		}
-		By("Verify expected Component")
-		diff := cmp.Diff(comps[0], expectCompManifest)
-		Expect(diff).ShouldNot(BeEmpty())
-	})
-
-	It("Test missing set required parameter", func() {
-		appfile := testAppfile()
-		// remove parameter settings
-		appfile.Workloads[0].Params = nil
-		_, err := appfile.GenerateComponentManifests()
-
-		expectError := errors.WithMessage(errors.New(`require parameter "image"`), "cannot resolve parameter settings")
-		diff := cmp.Diff(expectError, err, test.EquateErrors())
-		Expect(diff).Should(BeEmpty())
-	})
-})
-
 var _ = Describe("Test Workflow", func() {
 	It("generate workflow task runners", func() {
 		workflowStepDef := v1beta1.WorkflowStepDefinition{
@@ -462,77 +207,6 @@ variable "password" {
 	})
 })
 
-func TestResolveKubeParameters(t *testing.T) {
-	stringParam := &common.KubeParameter{
-		Name:       "strParam",
-		ValueType:  common.StringType,
-		FieldPaths: []string{"spec"},
-	}
-	requiredParam := &common.KubeParameter{
-		Name:       "reqParam",
-		Required:   pointer.Bool(true),
-		ValueType:  common.StringType,
-		FieldPaths: []string{"spec"},
-	}
-	tests := map[string]struct {
-		reason   string
-		params   []common.KubeParameter
-		settings map[string]interface{}
-		want     paramValueSettings
-		wantErr  error
-	}{
-		"EmptyParam": {
-			reason: "Empty value settings and no error should be returned",
-			want:   make(paramValueSettings),
-		},
-		"UnsupportedParam": {
-			reason:   "An error shoulde be returned because of unsupported param",
-			params:   []common.KubeParameter{*stringParam},
-			settings: map[string]interface{}{"unsupported": "invalid parameter"},
-			want:     nil,
-			wantErr:  errors.Errorf("unsupported parameter %q", "unsupported"),
-		},
-		"MissingRequiredParam": {
-			reason:   "An error should be returned because of missing required param",
-			params:   []common.KubeParameter{*stringParam, *requiredParam},
-			settings: map[string]interface{}{"strParam": "string"},
-			want:     nil,
-			wantErr:  errors.Errorf("require parameter %q", "reqParam"),
-		},
-		"Succeed": {
-			reason:   "No error should be returned",
-			params:   []common.KubeParameter{*stringParam, *requiredParam},
-			settings: map[string]interface{}{"strParam": "test", "reqParam": "test"},
-			want: paramValueSettings{
-				"strParam": paramValueSetting{
-					Value:      "test",
-					ValueType:  common.StringType,
-					FieldPaths: stringParam.FieldPaths,
-				},
-				"reqParam": paramValueSetting{
-					Value:      "test",
-					ValueType:  common.StringType,
-					FieldPaths: requiredParam.FieldPaths,
-				},
-			},
-			wantErr: nil,
-		},
-	}
-
-	for tcName, tc := range tests {
-		t.Run(tcName, func(t *testing.T) {
-			result, err := resolveKubeParameters(tc.params, tc.settings)
-			if diff := cmp.Diff(tc.want, result); diff != "" {
-				t.Fatalf("\nresolveKubeParameters(...)(...) -want +get \nreason:%s\n%s\n", tc.reason, diff)
-			}
-			if diff := cmp.Diff(tc.wantErr, err, test.EquateErrors()); diff != "" {
-				t.Fatalf("\nresolveKubeParameters(...)(...) -want +get \nreason:%s\n%s\n", tc.reason, diff)
-			}
-		})
-	}
-
-}
-
 func TestSetParameterValuesToKubeObj(t *testing.T) {
 	tests := map[string]struct {
 		reason  string
@@ -949,202 +623,6 @@ func TestGenerateTerraformConfigurationWorkload(t *testing.T) {
 	}
 }
 
-func TestGenerateCUETemplate(t *testing.T) {
-
-	var testCorrectTemplate = func() runtime.RawExtension {
-		yamlStr := `apiVersion: apps/v1
-kind: Deployment
-spec:
-  selector:
-    matchLabels:
-      app: nginx
-  template:
-    metadata:
-      labels:
-        app: nginx
-    spec:
-      containers:
-      - name: nginx
-      ports:
-      - containerPort: 80 `
-		b, _ := yaml.YAMLToJSON([]byte(yamlStr))
-		return runtime.RawExtension{Raw: b}
-	}
-
-	var testErrorTemplate = func() runtime.RawExtension {
-		yamlStr := `apiVersion: apps/v1
-kind: Deployment
-spec:
-  template:
-	selector:
-		matchLabels:
-		app: nginx
-`
-		b, _ := yaml.YAMLToJSON([]byte(yamlStr))
-		return runtime.RawExtension{Raw: b}
-	}
-
-	testcases := map[string]struct {
-		workload   *Workload
-		expectData string
-		hasError   bool
-		errInfo    string
-	}{"Kube workload with Correct template": {
-		workload: &Workload{
-			FullTemplate: &Template{
-				Kube: &common.Kube{
-					Template: testCorrectTemplate(),
-					Parameters: []common.KubeParameter{
-						{
-							Name:       "image",
-							ValueType:  common.StringType,
-							Required:   pointer.Bool(true),
-							FieldPaths: []string{"spec.template.spec.containers[0].image"},
-						},
-					},
-				},
-				Reference: common.WorkloadTypeDescriptor{
-					Definition: common.WorkloadGVK{
-						APIVersion: "apps/v1",
-						Kind:       "Deployment",
-					},
-				},
-			},
-			Params: map[string]interface{}{
-				"image": "nginx:1.14.0",
-			},
-			CapabilityCategory: oamtypes.KubeCategory,
-		},
-		expectData: `
-output: {
-	apiVersion: "apps/v1"
-	kind:       "Deployment"
-	spec: {
-		selector: {
-			matchLabels: {
-				app: "nginx"
-			}
-		}
-		template: {
-			metadata: {
-				labels: {
-					app: "nginx"
-				}
-			}
-			spec: {
-				containers: [{
-					image: "nginx:1.14.0"
-					name:  "nginx"
-				}]
-				ports: [{
-					containerPort: 80
-				}]
-			}
-		}
-	}
-}`,
-		hasError: false,
-	}, "Kube workload with wrong template": {
-		workload: &Workload{
-			FullTemplate: &Template{
-				Kube: &common.Kube{
-					Template: testErrorTemplate(),
-					Parameters: []common.KubeParameter{
-						{
-							Name:       "image",
-							ValueType:  common.StringType,
-							Required:   pointer.Bool(true),
-							FieldPaths: []string{"spec.template.spec.containers[0].image"},
-						},
-					},
-				},
-				Reference: common.WorkloadTypeDescriptor{
-					Definition: common.WorkloadGVK{
-						APIVersion: "apps/v1",
-						Kind:       "Deployment",
-					},
-				},
-			},
-			Params: map[string]interface{}{
-				"image": "nginx:1.14.0",
-			},
-			CapabilityCategory: oamtypes.KubeCategory,
-		},
-		hasError: true,
-		errInfo:  "cannot decode Kube template into K8s object: unexpected end of JSON input",
-	}, "Kube workload with wrong parameter": {
-		workload: &Workload{
-			FullTemplate: &Template{
-				Kube: &common.Kube{
-					Template: testCorrectTemplate(),
-					Parameters: []common.KubeParameter{
-						{
-							Name:       "image",
-							ValueType:  common.StringType,
-							Required:   pointer.Bool(true),
-							FieldPaths: []string{"spec.template.spec.containers[0].image"},
-						},
-					},
-				},
-				Reference: common.WorkloadTypeDescriptor{
-					Definition: common.WorkloadGVK{
-						APIVersion: "apps/v1",
-						Kind:       "Deployment",
-					},
-				},
-			},
-			Params: map[string]interface{}{
-				"unsupported": "invalid parameter",
-			},
-			CapabilityCategory: oamtypes.KubeCategory,
-		},
-		hasError: true,
-		errInfo:  "cannot resolve parameter settings: unsupported parameter \"unsupported\"",
-	}, "Helm workload with correct reference": {
-		workload: &Workload{
-			FullTemplate: &Template{
-				Reference: common.WorkloadTypeDescriptor{
-					Definition: common.WorkloadGVK{
-						APIVersion: "app/v1",
-						Kind:       "deployment",
-					},
-				},
-			},
-			CapabilityCategory: oamtypes.HelmCategory,
-		},
-		hasError: false,
-		expectData: `
-output: {
-	apiVersion: "app/v1"
-	kind: "deployment"
-}`,
-	}, "Helm workload with wrong reference": {
-		workload: &Workload{
-			FullTemplate: &Template{
-				Reference: common.WorkloadTypeDescriptor{
-					Definition: common.WorkloadGVK{
-						APIVersion: "app@//v1",
-						Kind:       "deployment",
-					},
-				},
-			},
-			CapabilityCategory: oamtypes.HelmCategory,
-		},
-		hasError: true,
-		errInfo:  "unexpected GroupVersion string: app@//v1",
-	}}
-
-	for i, tc := range testcases {
-		template, err := GenerateCUETemplate(tc.workload)
-		assert.Equal(t, err != nil, tc.hasError)
-		if tc.hasError {
-			assert.Equal(t, tc.errInfo, err.Error())
-			continue
-		}
-		assert.Equal(t, tc.expectData, template, i)
-	}
-}
-
 func TestPrepareArtifactsData(t *testing.T) {
 	compManifests := []*oamtypes.ComponentManifest{
 		{
diff --git a/pkg/appfile/helm/helm_test.go b/pkg/appfile/helm/helm_test.go
deleted file mode 100644
index 19474651..00000000
--- a/pkg/appfile/helm/helm_test.go
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package helm
-
-import (
-	"fmt"
-	"testing"
-
-	"github.com/google/go-cmp/cmp"
-	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
-	"sigs.k8s.io/yaml"
-
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
-	helmapi "github.com/oam-dev/kubevela/pkg/appfile/helm/flux2apis"
-)
-
-func TestRenderHelmReleaseAndHelmRepo(t *testing.T) {
-	h := testData("podinfo", "1.0.0", "test.com", "testSecret")
-	chartValues := map[string]interface{}{
-		"image": map[string]interface{}{
-			"tag": "1.0.1",
-		},
-	}
-	rls, repo, err := RenderHelmReleaseAndHelmRepo(h, "test-comp", "test-app", "test-ns", chartValues)
-	if err != nil {
-		t.Fatalf("want: nil, got: %v", err)
-	}
-
-	expectRls := &unstructured.Unstructured{}
-	expectRls.SetGroupVersionKind(helmapi.HelmReleaseGVK)
-	expectRls.SetName("test-app-test-comp")
-	expectRls.SetNamespace("test-ns")
-	unstructured.SetNestedMap(expectRls.Object, map[string]interface{}{
-		"chart": map[string]interface{}{
-			"spec": map[string]interface{}{
-				"chart":   "podinfo",
-				"version": "1.0.0",
-				"sourceRef": map[string]interface{}{
-					"kind":      "HelmRepository",
-					"name":      "test-app-test-comp",
-					"namespace": "test-ns",
-				},
-			},
-		},
-		"interval": "5m0s",
-		"values":   map[string]interface{}{"image": map[string]interface{}{"tag": "1.0.1"}},
-	}, "spec")
-
-	if diff := cmp.Diff(expectRls, rls); diff != "" {
-		t.Errorf("\n%s\nApply(...): -want , +got \n%s\n", "render HelmRelease", diff)
-	}
-
-	expectRepo := &unstructured.Unstructured{}
-	expectRepo.SetGroupVersionKind(helmapi.HelmRepositoryGVK)
-	expectRepo.SetName("test-app-test-comp")
-	expectRepo.SetNamespace("test-ns")
-	unstructured.SetNestedMap(expectRepo.Object, map[string]interface{}{
-		"url": "test.com",
-		"secretRef": map[string]interface{}{
-			"name": "testSecret",
-		},
-		"interval": "5m0s",
-	}, "spec")
-
-	if diff := cmp.Diff(expectRepo, repo); diff != "" {
-		t.Errorf("\n%s\nApply(...): -want , +got \n%s\n", "render HelmRepository", diff)
-	}
-}
-
-func testData(chart, version, repoURL, secretName string) *common.Helm {
-	rlsStr := fmt.Sprintf(
-		`chart:
-  spec:
-    chart: "%s"
-    version: "%s"`, chart, version)
-	repoStr := fmt.Sprintf(
-		`url: "%s"
-secretRef: 
-  name: "%s"`, repoURL, secretName)
-	rlsJson, _ := yaml.YAMLToJSON([]byte(rlsStr))
-	repoJson, _ := yaml.YAMLToJSON([]byte(repoStr))
-
-	h := &common.Helm{}
-	h.Release.Raw = rlsJson
-	h.Repository.Raw = repoJson
-	return h
-}
diff --git a/pkg/appfile/helm/schema_test.go b/pkg/appfile/helm/schema_test.go
deleted file mode 100644
index 61baab0f..00000000
--- a/pkg/appfile/helm/schema_test.go
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package helm
-
-import (
-	"context"
-	"encoding/json"
-	"fmt"
-	"os"
-	"testing"
-
-	"github.com/getkin/kin-openapi/openapi3"
-	"github.com/google/go-cmp/cmp"
-)
-
-func TestGenerateSchemaFromValues(t *testing.T) {
-	testValues, err := os.ReadFile("./testdata/values.yaml")
-	if err != nil {
-		t.Error(err, "cannot load test data")
-	}
-	wantSchema, err := os.ReadFile("./testdata/values.schema.json")
-	if err != nil {
-		t.Error(err, "cannot load expected data")
-	}
-	wantSchemaMap := map[string]interface{}{}
-	// convert bytes to map for diff converience
-	_ = json.Unmarshal(wantSchema, &wantSchemaMap)
-	result, err := generateSchemaFromValues(testValues)
-	if err != nil {
-		t.Error(err, "failed generate schema from values")
-	}
-	resultMap := map[string]interface{}{}
-	if err := json.Unmarshal(result, &resultMap); err != nil {
-		t.Error(err, "cannot unmarshal result bytes")
-	}
-	if diff := cmp.Diff(resultMap, wantSchemaMap); diff != "" {
-		t.Fatalf("\ngenerateSchemaFromValues(...)(...) -want +get \n%s", diff)
-	}
-}
-
-func TestGetChartValuesJSONSchema(t *testing.T) {
-	testHelm := testData("podinfo", "5.1.4", "https://charts.kubevela.net/example", "testSecret")
-	wantSchema, err := os.ReadFile("./testdata/podinfo.values.schema.json")
-	if err != nil {
-		t.Error(err, "cannot load expected data")
-	}
-	wantSchemaMap := map[string]interface{}{}
-	// convert bytes to map for diff converience
-	_ = json.Unmarshal(wantSchema, &wantSchemaMap)
-	result, err := GetChartValuesJSONSchema(context.Background(), testHelm)
-	if err != nil {
-		t.Error(err, "failed get schema")
-	}
-	resultMap := map[string]interface{}{}
-	if err := json.Unmarshal(result, &resultMap); err != nil {
-		t.Error(err, "cannot unmarshal result bytes")
-	}
-	if diff := cmp.Diff(resultMap, wantSchemaMap); diff != "" {
-		t.Fatalf("\nGetChartValuesJSONSchema(...)(...) -want +get \n%s", diff)
-	}
-}
-
-func TestChangeEnumToDefault(t *testing.T) {
-	// testData contains object, string, integer, bool, and array type fields
-	// with enum and required values
-	testData := `{"properties":{"array":{"enum":[["a","b","c"]],"items":{"type":"string"},"type":"array"},"bool":{"enum":[false],"type":"boolean"},"integer":{"enum":[1],"type":"integer"},"obj":{"properties":{"f0":{"enum":["v0"],"type":"string"},"f1":{"enum":["v1"],"type":"string"},"f2":{"enum":["v2"],"type":"string"}},"required":["f0","f1","f2"],"type":"object"},"string":{"enum":["a"],"type":"string"}},"required":["bool","string","obj","array","integer"],"type":"object"}`
-
-	s := fmt.Sprintf(`{"components":{"schemas":{"values":%s}}}`, testData)
-	testSwagger, err := openapi3.NewLoader().LoadFromData([]byte(s))
-	if err != nil {
-		t.Error(err)
-	}
-	testSchema := testSwagger.Components.Schemas["values"].Value
-	changeEnumToDefault(testSchema)
-	result, err := testSchema.MarshalJSON()
-	if err != nil {
-		t.Error(err)
-	}
-	resultMap := map[string]interface{}{}
-	err = json.Unmarshal(result, &resultMap)
-	if err != nil {
-		t.Error(err)
-	}
-	want := `{"properties":{"array":{"default":["a","b","c"],"items":{"type":"string"},"type":"array"},"bool":{"default":false,"type":"boolean"},"integer":{"default":1,"type":"integer"},"obj":{"properties":{"f0":{"default":"v0","type":"string"},"f1":{"default":"v1","type":"string"},"f2":{"default":"v2","type":"string"}},"type":"object"},"string":{"default":"a","type":"string"}},"type":"object"}`
-	wantMap := map[string]interface{}{}
-	_ = json.Unmarshal([]byte(want), &wantMap)
-	if diff := cmp.Diff(resultMap, wantMap); diff != "" {
-		t.Fatalf("\nchangeEnumToDefault(...) -want +get %s\n", diff)
-	}
-}
-
-func TestMakeSwaggerCompatible(t *testing.T) {
-	tests := []struct {
-		caseName string
-		testdata string
-		want     string
-	}{
-		{
-			caseName: "integer type array",
-			testdata: `{"integerArray": {
-    "type": "array",
-    "items": [
-      {
-        "type": "integer",
-        "enum": [
-          0
-        ]
-      },
-      {
-        "type": "integer",
-        "enum": [
-          1
-        ]
-      },
-      {
-        "type": "integer",
-        "enum": [
-          2
-        ]
-      }
-    ],
-    "enum": [
-      [
-        0,
-        1,
-        2
-      ]
-    ]
-  }}`,
-			want: `{"integerArray":{"enum":[[0,1,2]],"items":{"enum":null,"type":"integer"},"type":"array"}}`,
-		},
-		{
-			caseName: "string type array",
-			testdata: `{"stringArray": {
-  "type": "array",
-  "items": [
-    {
-      "type": "string",
-      "enum": [
-        "a"
-      ]
-    },
-    {
-      "type": "string",
-      "enum": [
-        "b"
-      ]
-    },
-    {
-      "type": "string",
-      "enum": [
-        "c"
-      ]
-    }
-  ],
-  "enum": [
-    [
-      "a",
-      "b",
-      "c"
-    ]
-  ]
-}}`,
-			want: `{"stringArray":{"enum":[["a","b","c"]],"items":{"enum":null,"type":"string"},"type":"array"}}`,
-		},
-		{
-			caseName: "bool type array",
-			testdata: `{"boolArray": {
-  "type": "array",
-  "items": [
-    {
-      "type": "boolean",
-      "enum": [
-        true
-      ]
-    },
-    {
-      "type": "boolean",
-      "enum": [
-        false
-      ]
-    }
-  ],
-  "enum": [
-    [
-      true,
-      false
-    ]
-  ]
-}}`,
-			want: `{"boolArray":{"enum":[[true,false]],"items":{"enum":null,"type":"boolean"},"type":"array"}}`,
-		},
-		{
-			caseName: "object type array",
-			testdata: `{"objectArray": {
-  "type": "array",
-  "items": [
-    {
-      "type": "object",
-      "required": [
-        "f0",
-        "f1",
-        "f2"
-      ],
-      "properties": {
-        "f0": {
-          "type": "string",
-          "enum": [
-            "v0"
-          ]
-        },
-        "f1": {
-          "type": "string",
-          "enum": [
-            "v1"
-          ]
-        },
-        "f2": {
-          "type": "string",
-          "enum": [
-            "v2"
-          ]
-        }
-      }
-    }
-  ]
-}}`,
-			want: `{"objectArray":{"items":{"enum":null,"properties":{"f0":{"enum":["v0"],"type":"string"},"f1":{"enum":["v1"],"type":"string"},"f2":{"enum":["v2"],"type":"string"}},"required":["f0","f1","f2"],"type":"object"},"type":"array"}}`,
-		},
-		{
-			caseName: "object type array embeds object type array",
-			testdata: `{
-  "objectArray": {
-    "type": "array",
-    "items": [
-      {
-        "type": "array",
-        "items": [
-          {
-            "type": "object",
-            "required": [
-              "f0"
-            ],
-            "properties": {
-              "f0": {
-                "type": "string",
-                "enum": [
-                  "v0"
-                ]
-              }
-            }
-          }
-        ]
-      }
-    ]
-  }
-}
-`,
-			want: `{"objectArray":{"items":{"enum":null,"items":{"enum":null,"properties":{"f0":{"enum":["v0"],"type":"string"}},"required":["f0"],"type":"object"},"type":"array"},"type":"array"}}`,
-		},
-	}
-
-	for _, tc := range tests {
-		t.Run(tc.caseName, func(t *testing.T) {
-			result, err := makeSwaggerCompatible([]byte(tc.testdata))
-			if err != nil {
-				t.Error(err)
-			}
-			resultMap := map[string]interface{}{}
-			err = json.Unmarshal(result, &resultMap)
-			if err != nil {
-				t.Error(err)
-			}
-			wantMap := map[string]interface{}{}
-			_ = json.Unmarshal([]byte(tc.want), &wantMap)
-			if diff := cmp.Diff(resultMap, wantMap); diff != "" {
-				t.Fatalf("\nmakeSwaggerCompatible(...) -want +get %s\n", diff)
-			}
-		})
-	}
-}
diff --git a/pkg/appfile/template_test.go b/pkg/appfile/template_test.go
index 98349eab..c5847035 100644
--- a/pkg/appfile/template_test.go
+++ b/pkg/appfile/template_test.go
@@ -293,20 +293,6 @@ func TestLoadSchematicToTemplate(t *testing.T) {
 				Terraform:          &common.Terraform{},
 			},
 		},
-		"helm schematic": {
-			schematic: &common.Schematic{HELM: &common.Helm{}},
-			want: &Template{
-				CapabilityCategory: types.HelmCategory,
-				Helm:               &common.Helm{},
-			},
-		},
-		"kube schematic": {
-			schematic: &common.Schematic{KUBE: &common.Kube{}},
-			want: &Template{
-				CapabilityCategory: types.KubeCategory,
-				Kube:               &common.Kube{},
-			},
-		},
 	}
 	for reason, casei := range testCases {
 		gtmp := &Template{}
@@ -365,8 +351,6 @@ spec:
 				Kind:       "Deployment",
 			},
 		},
-		Helm:                nil,
-		Kube:                nil,
 		ComponentDefinition: compDef,
 	}
 
@@ -375,8 +359,6 @@ spec:
 		Health:             "testHealthPolicy",
 		CustomStatus:       "testCustomStatus",
 		CapabilityCategory: types.CUECategory,
-		Helm:               nil,
-		Kube:               nil,
 		TraitDefinition:    traitDef,
 	}
 
diff --git a/pkg/controller/core.oam.dev/v1beta1/core/components/componentdefinition/componentdefinition_controller_test.go b/pkg/controller/core.oam.dev/v1beta1/core/components/componentdefinition/componentdefinition_controller_test.go
index 079917b3..804dfd95 100644
--- a/pkg/controller/core.oam.dev/v1beta1/core/components/componentdefinition/componentdefinition_controller_test.go
+++ b/pkg/controller/core.oam.dev/v1beta1/core/components/componentdefinition/componentdefinition_controller_test.go
@@ -22,8 +22,6 @@ import (
 	"fmt"
 	"time"
 
-	"k8s.io/klog/v2"
-
 	"github.com/oam-dev/kubevela/pkg/oam/testutil"
 
 	. "github.com/onsi/ginkgo/v2"
@@ -31,13 +29,11 @@ import (
 	corev1 "k8s.io/api/core/v1"
 	crdv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/runtime"
 	"k8s.io/utils/pointer"
 	"sigs.k8s.io/controller-runtime/pkg/client"
 	"sigs.k8s.io/controller-runtime/pkg/reconcile"
 	"sigs.k8s.io/yaml"
 
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
 	"github.com/oam-dev/kubevela/apis/types"
 	"github.com/oam-dev/kubevela/pkg/oam/util"
@@ -319,100 +315,6 @@ spec:
 		})
 	})
 
-	Context("When the ComponentDefinition contains Helm Module, should create a ConfigMap", func() {
-		var componentDefinitionName = "cd-with-helm-module"
-		var namespace = "default"
-		req := reconcile.Request{NamespacedName: client.ObjectKey{Name: componentDefinitionName, Namespace: namespace}}
-
-		It("Applying ComponentDefinition with Helm module", func() {
-			cd := v1beta1.ComponentDefinition{}
-			cd.SetName(componentDefinitionName)
-			cd.SetNamespace(namespace)
-			cd.Spec.Workload.Definition = common.WorkloadGVK{APIVersion: "apps/v1", Kind: "Deployment"}
-			cd.Spec.Schematic = &common.Schematic{
-				HELM: &common.Helm{
-					Release: *util.Object2RawExtension(map[string]interface{}{
-						"chart": map[string]interface{}{
-							"spec": map[string]interface{}{
-								"chart":   "podinfo",
-								"version": "5.1.4",
-							},
-						},
-					}),
-					Repository: *util.Object2RawExtension(map[string]interface{}{
-						"url": "https://charts.kubevela.net/example/",
-					}),
-				},
-			}
-			By("Create ComponentDefinition")
-			Expect(k8sClient.Create(ctx, &cd)).Should(Succeed())
-			testutil.ReconcileRetry(&r, req)
-
-			By("Check whether ConfigMap is created")
-			var cm corev1.ConfigMap
-			name := fmt.Sprintf("component-%s%s", types.CapabilityConfigMapNamePrefix, componentDefinitionName)
-			Eventually(func() bool {
-				err := k8sClient.Get(ctx, client.ObjectKey{Namespace: namespace, Name: name}, &cm)
-				if err != nil {
-					klog.ErrorS(err, "failed to get configmap")
-				}
-				return err == nil
-			}, 10*time.Second, time.Second).Should(BeTrue())
-			Expect(cm.Data[types.OpenapiV3JSONSchema]).Should(Not(Equal("")))
-
-			By("Check whether ConfigMapRef refer to right ConfigMap")
-			Eventually(func() string {
-				_ = k8sClient.Get(ctx, client.ObjectKey{Namespace: cd.Namespace, Name: cd.Name}, &cd)
-				return cd.Status.ConfigMapRef
-			}, 10*time.Second, time.Second).Should(Equal(name))
-		})
-	})
-
-	Context("When the ComponentDefinition contains Kube Module, should create a ConfigMap", func() {
-		var componentDefinitionName = "cd-with-kube-module"
-		var namespace = "default"
-		req := reconcile.Request{NamespacedName: client.ObjectKey{Name: componentDefinitionName, Namespace: namespace}}
-
-		It("Applying ComponentDefinition with kube Module", func() {
-			cd := v1beta1.ComponentDefinition{}
-			cd.SetName(componentDefinitionName)
-			cd.SetNamespace(namespace)
-			cd.Spec.Workload.Definition = common.WorkloadGVK{APIVersion: "apps/v1", Kind: "Deployment"}
-			cd.Spec.Schematic = &common.Schematic{
-				KUBE: &common.Kube{
-					Template: generateTemplate(KUBEWorkerTemplate),
-					Parameters: []common.KubeParameter{
-						{
-							Name:        "image",
-							ValueType:   common.StringType,
-							FieldPaths:  []string{"spec.template.spec.containers[0].image"},
-							Required:    pointer.Bool(true),
-							Description: pointer.String("test description"),
-						},
-					},
-				},
-			}
-			By("Create ComponentDefinition")
-			Expect(k8sClient.Create(ctx, &cd)).Should(Succeed())
-			testutil.ReconcileRetry(&r, req)
-
-			By("Check whether ConfigMap is created")
-			var cm corev1.ConfigMap
-			name := fmt.Sprintf("component-%s%s", types.CapabilityConfigMapNamePrefix, componentDefinitionName)
-			Eventually(func() bool {
-				err := k8sClient.Get(ctx, client.ObjectKey{Namespace: namespace, Name: name}, &cm)
-				return err == nil
-			}, 10*time.Second, time.Second).Should(BeTrue())
-			Expect(cm.Data[types.OpenapiV3JSONSchema]).Should(Not(Equal("")))
-
-			By("Check whether ConfigMapRef refer to right ConfigMap")
-			Eventually(func() string {
-				_ = k8sClient.Get(ctx, client.ObjectKey{Namespace: cd.Namespace, Name: cd.Name}, &cd)
-				return cd.Status.ConfigMapRef
-			}, 10*time.Second, time.Second).Should(Equal(name))
-		})
-	})
-
 	Context("When the ComponentDefinition contains Terraform Module, should create a ConfigMap", func() {
 		var componentDefinitionName = "alibaba-rds-test"
 		var namespace = "default"
@@ -740,25 +642,3 @@ spec:
 		})
 	})
 })
-
-func generateTemplate(template string) runtime.RawExtension {
-	b, _ := yaml.YAMLToJSON([]byte(template))
-	return runtime.RawExtension{Raw: b}
-}
-
-var KUBEWorkerTemplate = `apiVersion: apps/v1
-kind: Deployment
-spec:
-  selector:
-    matchLabels:
-      app: nginx
-  template:
-    metadata:
-      labels:
-        app: nginx
-    spec:
-      containers:
-      - name: nginx
-      ports:
-      - containerPort: 80
-`
diff --git a/pkg/oam/testutil/helper.go b/pkg/oam/testutil/helper.go
index b904d9b4..4c8c1701 100644
--- a/pkg/oam/testutil/helper.go
+++ b/pkg/oam/testutil/helper.go
@@ -35,16 +35,6 @@ func ReconcileRetry(r reconcile.Reconciler, req reconcile.Request) {
 	}, 15*time.Second, time.Second).Should(gomega.BeNil())
 }
 
-// ReconcileRetryAndExpectErr will reconcile and get error
-func ReconcileRetryAndExpectErr(r reconcile.Reconciler, req reconcile.Request) {
-	gomega.Eventually(func() error {
-		if _, err := r.Reconcile(context.TODO(), req); err != nil {
-			return err
-		}
-		return nil
-	}, 3*time.Second, time.Second).ShouldNot(gomega.BeNil())
-}
-
 // ReconcileOnce will just reconcile once
 func ReconcileOnce(r reconcile.Reconciler, req reconcile.Request) {
 	if _, err := r.Reconcile(context.TODO(), req); err != nil {
diff --git a/pkg/policy/envbinding/placement_test.go b/pkg/policy/envbinding/placement_test.go
index dd13d2f3..a2f26796 100644
--- a/pkg/policy/envbinding/placement_test.go
+++ b/pkg/policy/envbinding/placement_test.go
@@ -17,83 +17,15 @@ limitations under the License.
 package envbinding
 
 import (
-	"encoding/json"
 	"testing"
 
 	"github.com/stretchr/testify/require"
-	"k8s.io/apimachinery/pkg/runtime"
 
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1alpha1"
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
 )
 
-func TestReadPlacementDecisions(t *testing.T) {
-	pld := []v1alpha1.PlacementDecision{{
-		Cluster:   "example-cluster",
-		Namespace: "example-namespace",
-	}}
-	testCases := []struct {
-		Status           *v1alpha1.EnvBindingStatus
-		StatusRaw        []byte
-		ExpectedExists   bool
-		ExpectedHasError bool
-	}{{
-		Status:           nil,
-		StatusRaw:        []byte(`bad value`),
-		ExpectedExists:   false,
-		ExpectedHasError: true,
-	}, {
-		Status: &v1alpha1.EnvBindingStatus{
-			Envs: []v1alpha1.EnvStatus{{
-				Env:        "example-env",
-				Placements: pld,
-			}},
-		},
-		ExpectedExists:   true,
-		ExpectedHasError: false,
-	}, {
-		Status: &v1alpha1.EnvBindingStatus{
-			Envs: []v1alpha1.EnvStatus{{
-				Env:        "bad-env",
-				Placements: pld,
-			}},
-		},
-		ExpectedExists:   false,
-		ExpectedHasError: false,
-	}}
-	r := require.New(t)
-	for _, testCase := range testCases {
-		app := &v1beta1.Application{}
-		_status := common.PolicyStatus{
-			Name: "example-policy",
-			Type: v1alpha1.EnvBindingPolicyType,
-		}
-		if testCase.Status == nil {
-			_status.Status = &runtime.RawExtension{Raw: testCase.StatusRaw}
-		} else {
-			bs, err := json.Marshal(testCase.Status)
-			r.NoError(err)
-			_status.Status = &runtime.RawExtension{Raw: bs}
-		}
-		app.Status.PolicyStatus = []common.PolicyStatus{_status}
-		pds, exists, err := ReadPlacementDecisions(app, "", "example-env")
-		r.Equal(testCase.ExpectedExists, exists)
-		if testCase.ExpectedHasError {
-			r.Error(err)
-			continue
-		}
-		r.NoError(err)
-		if exists {
-			r.Equal(len(pld), len(pds))
-			for idx := range pld {
-				r.Equal(pld[idx].Cluster, pds[idx].Cluster)
-				r.Equal(pld[idx].Namespace, pds[idx].Namespace)
-			}
-		}
-	}
-}
-
 func TestUpdateClusterConnections(t *testing.T) {
 	app := &v1beta1.Application{}
 	app.Status.LatestRevision = &common.Revision{Name: "v1"}
diff --git a/pkg/policy/envbinding/utils_test.go b/pkg/policy/envbinding/utils_test.go
deleted file mode 100644
index 64776279..00000000
--- a/pkg/policy/envbinding/utils_test.go
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package envbinding
-
-import (
-	"context"
-	"testing"
-
-	"github.com/stretchr/testify/require"
-)
-
-func TestEnvContext(t *testing.T) {
-	r := require.New(t)
-	envName := "env"
-	extracted := EnvNameInContext(ContextWithEnvName(context.Background(), envName))
-	r.Equal(envName, extracted)
-	r.Equal("", EnvNameInContext(context.Background()))
-}
diff --git a/pkg/resourcekeeper/cache_test.go b/pkg/resourcekeeper/cache_test.go
index 8c7d372d..2f00480f 100644
--- a/pkg/resourcekeeper/cache_test.go
+++ b/pkg/resourcekeeper/cache_test.go
@@ -84,7 +84,8 @@ func TestResourceCache(t *testing.T) {
 	}
 	rts := []*v1beta1.ResourceTracker{nil, rt1, rt2, rt3}
 	cache.registerResourceTrackers(rts...)
-	o, ok := cache.m.Get(createMR("resource-1").ResourceKey())
+	mr := createMR("resource-1")
+	o, ok := cache.m.Get(mr.ResourceKey())
 	r.True(ok)
 	r.False(o.loaded)
 	for _, check := range []struct {
diff --git a/pkg/utils/sanitize_test.go b/pkg/utils/sanitize_test.go
deleted file mode 100644
index 65490df2..00000000
--- a/pkg/utils/sanitize_test.go
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-	http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package utils
-
-import (
-	"testing"
-
-	"github.com/stretchr/testify/require"
-)
-
-func TestSanitize(t *testing.T) {
-	s := "abc\ndef\rgh"
-	require.Equal(t, "abcdefgh", Sanitize(s))
-}
diff --git a/pkg/utils/strings_test.go b/pkg/utils/strings_test.go
index 83b864b5..1cfa5c03 100644
--- a/pkg/utils/strings_test.go
+++ b/pkg/utils/strings_test.go
@@ -17,202 +17,12 @@
 package utils
 
 import (
-	"errors"
-	"net/url"
 	"testing"
 
-	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
 )
 
-func TestCompareSlice(t *testing.T) {
-	caseA := []string{"c", "b", "a"}
-	caseB := []string{"c", "b", "a"}
-	gotab, gotao, gotbo := ThreeWaySliceCompare(caseA, caseB)
-	assert.Equal(t, gotab, []string{"a", "b", "c"})
-	assert.Equal(t, gotao, []string(nil))
-	assert.Equal(t, gotbo, []string(nil))
-
-	caseA = []string{"c", "b"}
-	caseB = []string{"c", "a"}
-	gotab, gotao, gotbo = ThreeWaySliceCompare(caseA, caseB)
-	assert.Equal(t, gotab, []string{"c"})
-	assert.Equal(t, gotao, []string{"b"})
-	assert.Equal(t, gotbo, []string{"a"})
-
-	caseA = []string{"c", "b"}
-	caseB = nil
-	gotab, gotao, gotbo = ThreeWaySliceCompare(caseA, caseB)
-	assert.Equal(t, gotab, []string(nil))
-	assert.Equal(t, gotao, []string{"b", "c"})
-	assert.Equal(t, gotbo, []string(nil))
-
-	caseA = nil
-	caseB = []string{"c", "b"}
-	gotab, gotao, gotbo = ThreeWaySliceCompare(caseA, caseB)
-	assert.Equal(t, gotab, []string(nil))
-	assert.Equal(t, gotao, []string(nil))
-	assert.Equal(t, gotbo, []string{"b", "c"})
-}
-
-func TestEqual(t *testing.T) {
-	caseA := []string{"c", "b", "a"}
-	caseB := []string{"c", "b", "a"}
-	assert.Equal(t, EqualSlice(caseA, caseB), true)
-
-	caseA = []string{"c", "a", "b"}
-	caseB = []string{"c", "b", "a"}
-	assert.Equal(t, EqualSlice(caseA, caseB), true)
-
-	caseA = []string{"c", "a", "b"}
-	caseB = []string{"b", "a", "c"}
-	assert.Equal(t, EqualSlice(caseA, caseB), true)
-
-	caseA = []string{"c", "a", "b"}
-	caseB = []string{"b", "a", "c", "d"}
-	assert.Equal(t, EqualSlice(caseA, caseB), false)
-
-	caseA = []string{}
-	caseB = []string{}
-	assert.Equal(t, EqualSlice(caseA, caseB), true)
-
-	caseA = []string{}
-	caseB = []string{"b", "a", "c"}
-	assert.Equal(t, EqualSlice(caseA, caseB), false)
-}
-
-func TestSliceIncludeSlice(t *testing.T) {
-	caseA := []string{"b", "a", "c"}
-	caseB := []string{}
-	assert.Equal(t, SliceIncludeSlice(caseA, caseB), true)
-
-	caseA = []string{"b", "a", "c"}
-	caseB = []string{"b"}
-	assert.Equal(t, SliceIncludeSlice(caseA, caseB), true)
-
-	caseA = []string{"b", "a", "c"}
-	caseB = []string{"b", "c"}
-	assert.Equal(t, SliceIncludeSlice(caseA, caseB), true)
-
-	caseA = []string{"b", "a", "c"}
-	caseB = []string{"b", "c", "d"}
-	assert.Equal(t, SliceIncludeSlice(caseA, caseB), false)
-
-	caseA = []string{"b", "a", "c"}
-	caseB = []string{"b", "c", "a"}
-	assert.Equal(t, SliceIncludeSlice(caseA, caseB), true)
-}
-
-func TestJoinURL(t *testing.T) {
-
-	testcase := []struct {
-		baseURL     string
-		subPath     string
-		expectedUrl string
-		err         error
-	}{
-		{
-			baseURL:     "https://www.kubevela.com",
-			subPath:     "index.yaml",
-			expectedUrl: "https://www.kubevela.com/index.yaml",
-			err:         nil,
-		},
-		{
-			baseURL:     "http://www.kubevela.com",
-			subPath:     "index.yaml",
-			expectedUrl: "http://www.kubevela.com/index.yaml",
-			err:         nil,
-		},
-		{
-			baseURL:     "0x7f:",
-			subPath:     "index.yaml",
-			expectedUrl: "",
-			err:         &url.Error{Op: "parse", URL: "0x7f:", Err: errors.New("first path segment in URL cannot contain colon")},
-		},
-	}
-
-	for _, tc := range testcase {
-		url, err := JoinURL(tc.baseURL, tc.subPath)
-		assert.Equal(t, tc.expectedUrl, url)
-		assert.Equal(t, tc.err, err)
-	}
-
-}
-
-func TestToString(t *testing.T) {
-	type Obj struct {
-		k string
-	}
-	obj := &Obj{"foo"}
-	boolPtr := true
-	caseA := []struct {
-		input  interface{}
-		expect string
-	}{
-		{int(666), "666"},
-		{int8(6), "6"},
-		{int16(6), "6"},
-		{int32(6), "6"},
-		{int64(6), "6"},
-		{uint(6), "6"},
-		{uint8(6), "6"},
-		{uint16(6), "6"},
-		{uint32(6), "6"},
-		{uint64(6), "6"},
-		{float32(3.14), "3.14"},
-		{float64(3.14), "3.14"},
-		{true, "true"},
-		{false, "false"},
-		{&boolPtr, "true"},
-		{nil, ""},
-		{[]byte("one time"), "one time"},
-		{"one more time", "one more time"},
-		{obj, ""},
-	}
-
-	for _, test := range caseA {
-		v := ToString(test.input)
-		assert.Equal(t, test.expect, v)
-	}
-}
-
-func TestStringsContain(t *testing.T) {
-	type args struct {
-		items  []string
-		source string
-	}
-	tests := []struct {
-		name string
-		args args
-		want bool
-	}{
-		{
-			name: "test empty items should not contain any string",
-			args: args{
-				items:  []string{},
-				source: "foo",
-			},
-			want: false,
-		},
-		{
-			name: "test items should contain source",
-			args: args{
-				items:  []string{"foo", "bar"},
-				source: "foo",
-			},
-			want: true,
-		},
-		{
-			name: "test items should not contain source",
-			args: args{
-				items:  []string{"foo", "bar"},
-				source: "baz",
-			},
-			want: false,
-		},
-	}
-	for _, tt := range tests {
-		t.Run(tt.name, func(t *testing.T) {
-			assert.Equalf(t, tt.want, StringsContain(tt.args.items, tt.args.source), "StringsContain(%v, %v)", tt.args.items, tt.args.source)
-		})
-	}
+func TestSanitize(t *testing.T) {
+	s := "abc\ndef\rgh"
+	require.Equal(t, "abcdefgh", Sanitize(s))
 }
diff --git a/pkg/utils/url_test.go b/pkg/utils/url_test.go
index e3644fae..10109b97 100644
--- a/pkg/utils/url_test.go
+++ b/pkg/utils/url_test.go
@@ -17,6 +17,8 @@ limitations under the License.
 package utils
 
 import (
+	"fmt"
+	"net/url"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
@@ -113,3 +115,37 @@ func TestIsValidURL(t *testing.T) {
 		})
 	}
 }
+
+func TestJoinURL(t *testing.T) {
+	testcase := []struct {
+		baseURL     string
+		subPath     string
+		expectedUrl string
+		err         error
+	}{
+		{
+			baseURL:     "https://www.kubevela.com",
+			subPath:     "index.yaml",
+			expectedUrl: "https://www.kubevela.com/index.yaml",
+			err:         nil,
+		},
+		{
+			baseURL:     "http://www.kubevela.com",
+			subPath:     "index.yaml",
+			expectedUrl: "http://www.kubevela.com/index.yaml",
+			err:         nil,
+		},
+		{
+			baseURL:     "0x7f:",
+			subPath:     "index.yaml",
+			expectedUrl: "",
+			err:         &url.Error{Op: "parse", URL: "0x7f:", Err: fmt.Errorf("first path segment in URL cannot contain colon")},
+		},
+	}
+
+	for _, tc := range testcase {
+		url, err := JoinURL(tc.baseURL, tc.subPath)
+		assert.Equal(t, tc.expectedUrl, url)
+		assert.Equal(t, tc.err, err)
+	}
+}
diff --git a/pkg/webhook/core.oam.dev/v1beta1/componentdefinition/validating_handler_test.go b/pkg/webhook/core.oam.dev/v1beta1/componentdefinition/validating_handler_test.go
index 5a73e996..0f235d37 100644
--- a/pkg/webhook/core.oam.dev/v1beta1/componentdefinition/validating_handler_test.go
+++ b/pkg/webhook/core.oam.dev/v1beta1/componentdefinition/validating_handler_test.go
@@ -169,25 +169,5 @@ var _ = Describe("Test ComponentDefinition validating handler", func() {
 			Expect(resp.Allowed).Should(BeFalse())
 			Expect(resp.Result.Reason).Should(Equal(metav1.StatusReason("the type and the definition of the workload field in ComponentDefinition wrongCd should represent the same workload")))
 		})
-
-		It("Test HELM type componentDefinition without definition", func() {
-			helmCd := v1beta1.ComponentDefinition{}
-			helmCd.SetGroupVersionKind(v1beta1.ComponentDefinitionGroupVersionKind)
-			helmCd.SetName("helmCd")
-			helmCd.Spec.Workload.Type = "deployments.apps"
-			helmCd.Spec.Schematic = &common.Schematic{
-				HELM: &common.Helm{},
-			}
-			helmCdRaw, _ := json.Marshal(helmCd)
-			req := admission.Request{
-				AdmissionRequest: admissionv1.AdmissionRequest{
-					Operation: admissionv1.Create,
-					Resource:  reqResource,
-					Object:    runtime.RawExtension{Raw: helmCdRaw},
-				},
-			}
-			resp := handler.Handle(context.TODO(), req)
-			Expect(resp.Allowed).Should(BeTrue())
-		})
 	})
 })
diff --git a/pkg/workflow/providers/multicluster/multicluster_test.go b/pkg/workflow/providers/multicluster/multicluster_test.go
index 31398174..6b9bec4c 100644
--- a/pkg/workflow/providers/multicluster/multicluster_test.go
+++ b/pkg/workflow/providers/multicluster/multicluster_test.go
@@ -40,93 +40,6 @@ import (
 	"github.com/oam-dev/kubevela/pkg/utils/common"
 )
 
-func TestReadPlacementDecisions(t *testing.T) {
-	testCases := []struct {
-		InputVal             map[string]interface{}
-		OldCluster           string
-		OldNamespace         string
-		ExpectError          string
-		ExpectDecisionExists bool
-		ExpectCluster        string
-		ExpectNamespace      string
-	}{{
-		InputVal:    map[string]interface{}{},
-		ExpectError: "var(path=inputs.policyName) not exist",
-	}, {
-		InputVal: map[string]interface{}{
-			"policyName": "example-policy",
-		},
-		ExpectError: "var(path=inputs.envName) not exist",
-	}, {
-		InputVal: map[string]interface{}{
-			"policyName": "example-policy",
-			"envName":    "example-env",
-		},
-		ExpectError:          "",
-		ExpectDecisionExists: false,
-	}, {
-		InputVal: map[string]interface{}{
-			"policyName": "example-policy",
-			"envName":    "example-env",
-		},
-		OldCluster:           "example-cluster",
-		OldNamespace:         "example-namespace",
-		ExpectError:          "",
-		ExpectDecisionExists: true,
-		ExpectCluster:        "example-cluster",
-		ExpectNamespace:      "example-namespace",
-	}}
-	r := require.New(t)
-	for _, testCase := range testCases {
-		cli := fake.NewClientBuilder().WithScheme(common.Scheme).Build()
-		app := &v1beta1.Application{}
-		p := &provider{
-			Client: cli,
-			app:    app,
-		}
-		act := &mock.Action{}
-		v, err := value.NewValue("", nil, "")
-		r.NoError(err)
-		r.NoError(v.FillObject(testCase.InputVal, "inputs"))
-		if testCase.ExpectCluster != "" || testCase.ExpectNamespace != "" {
-			pd := v1alpha1.PlacementDecision{
-				Cluster:   testCase.OldCluster,
-				Namespace: testCase.OldNamespace,
-			}
-			bs, err := json.Marshal(&v1alpha1.EnvBindingStatus{
-				Envs: []v1alpha1.EnvStatus{{
-					Env:        "example-env",
-					Placements: []v1alpha1.PlacementDecision{pd},
-				}},
-			})
-			r.NoError(err)
-			app.Status.PolicyStatus = []apicommon.PolicyStatus{{
-				Name:   "example-policy",
-				Type:   v1alpha1.EnvBindingPolicyType,
-				Status: &runtime.RawExtension{Raw: bs},
-			}}
-		}
-		err = p.ReadPlacementDecisions(nil, nil, v, act)
-		if testCase.ExpectError == "" {
-			r.NoError(err)
-		} else {
-			r.Contains(err.Error(), testCase.ExpectError)
-			continue
-		}
-		outputs, err := v.LookupValue("outputs")
-		r.NoError(err)
-		md := map[string][]v1alpha1.PlacementDecision{}
-		r.NoError(outputs.UnmarshalTo(&md))
-		if !testCase.ExpectDecisionExists {
-			r.Equal(0, len(md))
-		} else {
-			r.Equal(1, len(md["decisions"]))
-			r.Equal(testCase.ExpectCluster, md["decisions"][0].Cluster)
-			r.Equal(testCase.ExpectNamespace, md["decisions"][0].Namespace)
-		}
-	}
-}
-
 func TestMakePlacementDecisions(t *testing.T) {
 	multicluster.ClusterGatewaySecretNamespace = types.DefaultKubeVelaNS
 	testCases := []struct {
diff --git a/references/docgen/cluster_test.go b/references/docgen/cluster_test.go
index b54cc72f..bc7f1ef5 100644
--- a/references/docgen/cluster_test.go
+++ b/references/docgen/cluster_test.go
@@ -18,7 +18,6 @@ package docgen
 
 import (
 	"context"
-	"encoding/json"
 	"os"
 	"path/filepath"
 	"strings"
@@ -155,18 +154,8 @@ var _ = Describe("test GetCapabilityByName", func() {
 		defaultNS  string
 		cd1        corev1beta1.ComponentDefinition
 		cd2        corev1beta1.ComponentDefinition
-		cd3        corev1beta1.ComponentDefinition
-		cd4        corev1beta1.ComponentDefinition
-		td1        corev1beta1.TraitDefinition
-		td2        corev1beta1.TraitDefinition
-		td3        corev1beta1.TraitDefinition
 		component1 string
 		component2 string
-		component3 string
-		component4 string
-		trait1     string
-		trait2     string
-		trait3     string
 	)
 	BeforeEach(func() {
 		c = common.Args{}
@@ -176,12 +165,6 @@ var _ = Describe("test GetCapabilityByName", func() {
 		defaultNS = types.DefaultKubeVelaNS
 		component1 = "cd1"
 		component2 = "cd2"
-		component3 = "cd3"
-		component4 = "cd4"
-
-		trait1 = "td1"
-		trait2 = "td2"
-		trait3 = "td3"
 
 		By("create namespace")
 		Expect(k8sClient.Create(ctx, &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: ns}})).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
@@ -191,11 +174,6 @@ var _ = Describe("test GetCapabilityByName", func() {
 		data, _ := os.ReadFile("testdata/componentDef.yaml")
 		yaml.Unmarshal(data, &cd1)
 		yaml.Unmarshal(data, &cd2)
-		data2, _ := os.ReadFile("testdata/kube-worker.yaml")
-		yaml.Unmarshal(data2, &cd3)
-
-		helmYaml, _ := os.ReadFile("testdata/helm.yaml")
-		yaml.Unmarshal(helmYaml, &cd4)
 
 		cd1.Namespace = ns
 		cd1.Name = component1
@@ -204,38 +182,10 @@ var _ = Describe("test GetCapabilityByName", func() {
 		cd2.Namespace = defaultNS
 		cd2.Name = component2
 		Expect(k8sClient.Create(ctx, &cd2)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
-
-		cd3.Namespace = ns
-		cd3.Name = component3
-		Expect(k8sClient.Create(ctx, &cd3)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
-
-		cd4.Namespace = ns
-		cd4.Name = component4
-		Expect(k8sClient.Create(ctx, &cd4)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
-
-		By("create TraitDefinition")
-		data3, _ := os.ReadFile("testdata/svcTraitDef.yaml")
-		yaml.Unmarshal(data3, &td3)
-
-		td3.DeepCopyInto(&td1)
-		td3.DeepCopyInto(&td2)
-		td3.Namespace = ns
-		td3.Name = trait3
-		Expect(k8sClient.Create(ctx, &td3)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
-		td1.Name = trait1
-		td2.Name = trait2
-		td1.Namespace = ns
-		td1.Name = trait1
-		td1.SetResourceVersion("")
-		Expect(k8sClient.Create(ctx, &td1)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
-		td2.Namespace = defaultNS
-		td2.Name = trait2
-		td2.SetResourceVersion("")
-		Expect(k8sClient.Create(ctx, &td2)).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
 	})
 
 	AfterEach(func() {
-		for _, obj := range []client.Object{&cd1, &cd2, &cd3, &cd4, &td1, &td2, &td3} {
+		for _, obj := range []client.Object{&cd1, &cd2} {
 			key := client.ObjectKeyFromObject(obj)
 			Expect(k8sClient.Delete(ctx, obj)).Should(Succeed())
 			Eventually(func(g Gomega) {
@@ -253,36 +203,6 @@ var _ = Describe("test GetCapabilityByName", func() {
 		_, err = GetCapabilityByName(ctx, c, component2, ns, nil)
 		Expect(err).Should(BeNil())
 
-		By("ComponentDefinition is in the default namespace")
-		cap, err := GetCapabilityByName(ctx, c, component3, ns, nil)
-		Expect(err).Should(BeNil())
-		jsontmp, err := json.Marshal(cap.KubeParameter)
-		Expect(err).Should(BeNil())
-		Expect(string(jsontmp)).Should(ContainSubstring("image"))
-		Expect(string(jsontmp)).Should(ContainSubstring("spec.template.spec.containers[0].image"))
-		Expect(string(jsontmp)).Should(ContainSubstring("port"))
-		Expect(string(jsontmp)).Should(ContainSubstring("the specific container port num which can accept external request."))
-
-		By("ComponentDefinition's workload type is AutoDetectWorkloadDefinition")
-		_, err = GetCapabilityByName(ctx, c, component4, ns, nil)
-		Expect(err).Should(BeNil())
-
-		By("TraitDefinition is in the current namespace")
-		_, err = GetCapabilityByName(ctx, c, trait1, ns, nil)
-		Expect(err).Should(BeNil())
-
-		By("TraitDefinition is in the default namespace")
-		_, err = GetCapabilityByName(ctx, c, trait2, ns, nil)
-		Expect(err).Should(BeNil())
-
-		By("TraitDefinition is in the default namespace")
-		cap, err = GetCapabilityByName(ctx, c, trait3, ns, nil)
-		Expect(err).Should(BeNil())
-		jsontmp, err = json.Marshal(cap.KubeParameter)
-		Expect(err).Should(BeNil())
-		Expect(string(jsontmp)).Should(ContainSubstring("targetPort"))
-		Expect(string(jsontmp)).Should(ContainSubstring("target port num for service provider."))
-
 		By("capability cloud not be found")
 		_, err = GetCapabilityByName(ctx, c, "a-component-definition-not-existed", ns, nil)
 		Expect(err).Should(HaveOccurred())
diff --git a/references/docgen/testdata/kube-worker.yaml b/references/docgen/testdata/kube-worker.yaml
deleted file mode 100644
index 9bc2e150..00000000
--- a/references/docgen/testdata/kube-worker.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-apiVersion: core.oam.dev/v1beta1
-kind: ComponentDefinition
-metadata:
-  name: kube-worker
-  namespace: default
-spec:
-  workload:
-    definition:
-      apiVersion: apps/v1
-      kind: Deployment
-  schematic:
-    kube:
-      template:
-        apiVersion: apps/v1
-        kind: Deployment
-        spec:
-          selector:
-            matchLabels:
-              app: nginx
-          template:
-            metadata:
-              labels:
-                app: nginx
-            spec:
-              containers:
-                - name: nginx
-                  ports:
-                    - containerPort: 80
-      parameters:
-        - name: image
-          required: true
-          type: string
-          fieldPaths:
-            - "spec.template.spec.containers[0].image"
-        - name: port
-          required: true
-          type: string
-          fieldPaths:
-            - "spec.template.spec.containers[0].ports[0].containerPort"
-          description: "the specific container port num which can accept external request."
diff --git a/references/docgen/testdata/svcTraitDef.yaml b/references/docgen/testdata/svcTraitDef.yaml
deleted file mode 100644
index 900a91eb..00000000
--- a/references/docgen/testdata/svcTraitDef.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-apiVersion: core.oam.dev/v1beta1
-kind: TraitDefinition
-metadata:
-  name: service-kube
-  namespace: default
-spec:
-  appliesToWorkloads:
-    - webservice
-    - worker
-    - backend
-  podDisruptive: true
-  schematic:
-    kube:
-      template:
-        apiVersion: v1
-        kind: Service
-        metadata:
-          name: my-service
-        spec:
-          ports:
-            - protocol: TCP
-              port: 80
-              targetPort: 9376
-      parameters:
-        - name: targetPort
-          required: true
-          type: number
-          fieldPaths:
-            - "spec.template.spec.ports[0].targetPort"
-          description: "target port num for service provider."
diff --git a/test/e2e-multicluster-test/multicluster_test.go b/test/e2e-multicluster-test/multicluster_test.go
index 1dc7bebf..31a70a56 100644
--- a/test/e2e-multicluster-test/multicluster_test.go
+++ b/test/e2e-multicluster-test/multicluster_test.go
@@ -125,35 +125,6 @@ var _ = Describe("Test multicluster scenario", func() {
 			Expect(out).Should(ContainSubstring("alias-worker"))
 		})
 
-		It("Test detach cluster with application use", func() {
-			const testClusterName = "test-cluster"
-			_, err := execCommand("cluster", "join", "/tmp/worker.kubeconfig", "--name", testClusterName)
-			Expect(err).Should(Succeed())
-			app := &v1beta1.Application{}
-			bs, err := os.ReadFile("./testdata/app/example-lite-envbinding-app.yaml")
-			Expect(err).Should(Succeed())
-			appYaml := strings.ReplaceAll(string(bs), "TEST_CLUSTER_NAME", testClusterName)
-			Expect(yaml.Unmarshal([]byte(appYaml), app)).Should(Succeed())
-			ctx := context.Background()
-			err = k8sClient.Create(ctx, app)
-			Expect(err).Should(Succeed())
-			namespacedName := client.ObjectKeyFromObject(app)
-			Eventually(func(g Gomega) {
-				g.Expect(k8sClient.Get(ctx, namespacedName, app)).Should(Succeed())
-				g.Expect(len(app.Status.PolicyStatus)).ShouldNot(Equal(0))
-			}, 30*time.Second).Should(Succeed())
-			_, err = execCommand("cluster", "detach", testClusterName)
-			Expect(err).ShouldNot(Succeed())
-			err = k8sClient.Delete(ctx, app)
-			Expect(err).Should(Succeed())
-			Eventually(func(g Gomega) {
-				err := k8sClient.Get(ctx, namespacedName, app)
-				g.Expect(kerrors.IsNotFound(err)).Should(BeTrue())
-			}, 30*time.Second).Should(Succeed())
-			_, err = execCommand("cluster", "detach", testClusterName)
-			Expect(err).Should(Succeed())
-		})
-
 		It("Test generate service account kubeconfig", func() {
 			_, workerCtx := initializeContext()
 			By("create service account kubeconfig in worker cluster")
@@ -234,145 +205,6 @@ var _ = Describe("Test multicluster scenario", func() {
 			cleanUpNamespace(hubCtx, workerCtx, prodNamespace)
 		})
 
-		It("Test create EnvBinding Application", func() {
-			// This test is going to cover multiple functions, including
-			// 1. Multiple stage deployment for three environment
-			// 2. Namespace selector.
-			// 3. A special cluster: local cluster
-			// 4. Component selector.
-			By("apply application")
-			app := &v1beta1.Application{}
-			bs, err := os.ReadFile("./testdata/app/example-envbinding-app.yaml")
-			Expect(err).Should(Succeed())
-			appYaml := strings.ReplaceAll(strings.ReplaceAll(string(bs), "TEST_NAMESPACE", testNamespace), "PROD_NAMESPACE", prodNamespace)
-			Expect(yaml.Unmarshal([]byte(appYaml), app)).Should(Succeed())
-			app.SetNamespace(namespace)
-			err = k8sClient.Create(hubCtx, app)
-			Expect(err).Should(Succeed())
-			var hubDeployName string
-			By("wait application resource ready")
-			Eventually(func(g Gomega) {
-				// check deployments in clusters
-				deploys := &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(1))
-				hubDeployName = deploys.Items[0].Name
-				deploys = &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(namespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(2))
-				deploys = &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(prodNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(2))
-			}, time.Minute).Should(Succeed())
-			Expect(hubDeployName).Should(Equal("data-worker"))
-			// delete application
-			By("delete application")
-			Expect(k8sClient.Delete(hubCtx, app)).Should(Succeed())
-			By("wait application resource delete")
-			Eventually(func(g Gomega) {
-				// check deployments in clusters
-				deploys := &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(namespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(0))
-				deploys = &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(namespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(0))
-			}, time.Minute).Should(Succeed())
-		})
-
-		It("Test create EnvBinding Application with trait disable and without workflow, delete env, change env and add env", func() {
-			// This test is going to cover multiple functions, including
-			// 1. disable trait
-			// 2. auto deploy2env workflow
-			// 3. delete env
-			// 4. change cluster in env
-			// 5. add env
-			By("apply application")
-			app := &v1beta1.Application{}
-			bs, err := os.ReadFile("./testdata/app/example-envbinding-app-wo-workflow.yaml")
-			Expect(err).Should(Succeed())
-			appYaml := strings.ReplaceAll(string(bs), "TEST_NAMESPACE", testNamespace)
-			Expect(yaml.Unmarshal([]byte(appYaml), app)).Should(Succeed())
-			app.SetNamespace(testNamespace)
-			namespacedName := client.ObjectKeyFromObject(app)
-			err = k8sClient.Create(hubCtx, app)
-			Expect(err).Should(Succeed())
-			By("wait application resource ready")
-			Eventually(func(g Gomega) {
-				// check deployments in clusters
-				deploys := &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(1))
-				g.Expect(int(*deploys.Items[0].Spec.Replicas)).Should(Equal(2))
-				g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(1))
-				g.Expect(int(*deploys.Items[0].Spec.Replicas)).Should(Equal(1))
-			}, time.Minute).Should(Succeed())
-			By("test delete env")
-			spec := &v1alpha1.EnvBindingSpec{}
-			Expect(json.Unmarshal(app.Spec.Policies[0].Properties.Raw, spec)).Should(Succeed())
-			envs := spec.Envs
-			bs, err = json.Marshal(&v1alpha1.EnvBindingSpec{Envs: []v1alpha1.EnvConfig{envs[0]}})
-			Expect(err).Should(Succeed())
-			Eventually(func(g Gomega) {
-				g.Expect(k8sClient.Get(hubCtx, namespacedName, app)).Should(Succeed())
-				app.Spec.Policies[0].Properties.Raw = bs
-				g.Expect(k8sClient.Update(hubCtx, app)).Should(Succeed())
-			}, 15*time.Second).Should(Succeed())
-			Eventually(func(g Gomega) {
-				deploys := &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(0))
-			}, time.Minute).Should(Succeed())
-			By("test change env cluster name")
-			envs[0].Placement.ClusterSelector.Name = WorkerClusterName
-			bs, err = json.Marshal(&v1alpha1.EnvBindingSpec{Envs: []v1alpha1.EnvConfig{envs[0]}})
-			Expect(err).Should(Succeed())
-			Eventually(func(g Gomega) {
-				g.Expect(k8sClient.Get(hubCtx, namespacedName, app)).Should(Succeed())
-				app.Spec.Policies[0].Properties.Raw = bs
-				g.Expect(k8sClient.Update(hubCtx, app)).Should(Succeed())
-			}, 15*time.Second).Should(Succeed())
-			Eventually(func(g Gomega) {
-				deploys := &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(0))
-				g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(1))
-			}, time.Minute).Should(Succeed())
-			By("test add env")
-			envs[1].Placement.ClusterSelector.Name = multicluster.ClusterLocalName
-			bs, err = json.Marshal(&v1alpha1.EnvBindingSpec{Envs: envs})
-			Expect(err).Should(Succeed())
-			Eventually(func(g Gomega) {
-				g.Expect(k8sClient.Get(hubCtx, namespacedName, app)).Should(Succeed())
-				app.Spec.Policies[0].Properties.Raw = bs
-				g.Expect(k8sClient.Update(hubCtx, app)).Should(Succeed())
-			}, 15*time.Second).Should(Succeed())
-			Eventually(func(g Gomega) {
-				deploys := &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(1))
-				g.Expect(int(*deploys.Items[0].Spec.Replicas)).Should(Equal(1))
-				g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(1))
-				g.Expect(int(*deploys.Items[0].Spec.Replicas)).Should(Equal(2))
-			}, time.Minute).Should(Succeed())
-			// delete application
-			By("delete application")
-			Expect(k8sClient.Delete(hubCtx, app)).Should(Succeed())
-			By("wait application resource delete")
-			Eventually(func(g Gomega) {
-				// check deployments in clusters
-				deploys := &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(hubCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(0))
-				deploys = &appsv1.DeploymentList{}
-				g.Expect(k8sClient.List(workerCtx, deploys, client.InNamespace(testNamespace))).Should(Succeed())
-				g.Expect(len(deploys.Items)).Should(Equal(0))
-			}, time.Minute).Should(Succeed())
-		})
-
 		It("Test deploy multi-cluster application with target", func() {
 			By("apply application")
 			app := &v1beta1.Application{
diff --git a/test/e2e-multicluster-test/testdata/app/example-envbinding-app-wo-workflow.yaml b/test/e2e-multicluster-test/testdata/app/example-envbinding-app-wo-workflow.yaml
deleted file mode 100644
index f6c49c57..00000000
--- a/test/e2e-multicluster-test/testdata/app/example-envbinding-app-wo-workflow.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-apiVersion: core.oam.dev/v1beta1
-kind: Application
-metadata:
-  name: example-app
-  namespace: TEST_NAMESPACE # to be replaced
-spec:
-  components:
-    - name: hello-world-server
-      type: webservice
-      properties:
-        image: crccheck/hello-world
-        ports: 
-        - port: 8000
-          expose: true
-      traits:
-        - type: scaler
-          properties:
-            replicas: 2
-  policies:
-    - name: example-multi-env-policy
-      type: env-binding
-      properties:
-        envs:
-          - name: test
-            placement: # selecting the cluster to deploy to
-              clusterSelector:
-                name: local
-
-          - name: staging
-            placement: # selecting the cluster to deploy to
-              clusterSelector:
-                name: cluster-worker
-            patch:
-              components:
-                - name: hello-world-server
-                  type: webservice
-                  traits:
-                    - type: scaler
-                      disable: true
-
diff --git a/test/e2e-multicluster-test/testdata/app/example-envbinding-app.yaml b/test/e2e-multicluster-test/testdata/app/example-envbinding-app.yaml
deleted file mode 100644
index b102f6d3..00000000
--- a/test/e2e-multicluster-test/testdata/app/example-envbinding-app.yaml
+++ /dev/null
@@ -1,80 +0,0 @@
-apiVersion: core.oam.dev/v1beta1
-kind: Application
-metadata:
-  name: example-app
-  namespace: default
-spec:
-  components:
-    - name: hello-world-server
-      type: webservice
-      properties:
-        image: crccheck/hello-world
-        ports: 
-        - port: 8000
-          expose: true
-      traits:
-        - type: scaler
-          properties:
-            replicas: 1
-    - name: data-worker
-      type: worker
-      properties:
-        image: busybox
-        cmd:
-          - sleep
-          - '1000000'
-  policies:
-    - name: example-multi-env-policy
-      type: env-binding
-      properties:
-        envs:
-          - name: test
-            placement: # selecting the namespace (in local cluster) to deploy to
-              namespaceSelector:
-                name: TEST_NAMESPACE
-            selector:
-              components:
-                - data-worker
-
-          - name: staging
-            placement: # selecting the cluster to deploy to
-              clusterSelector:
-                name: cluster-worker
-
-          - name: prod
-            placement: # selecting both namespace and cluster to deploy to
-              clusterSelector:
-                name: cluster-worker
-              namespaceSelector:
-                name: PROD_NAMESPACE
-            patch: # overlay patch on above components
-              components:
-                - name: hello-world-server
-                  type: webservice
-                  traits:
-                    - type: scaler
-                      properties:
-                        replicas: 3
-
-  workflow:
-    steps:
-      # deploy to test env
-      - name: deploy-test
-        type: deploy2env
-        properties:
-          policy: example-multi-env-policy
-          env: test
-
-      # deploy to staging env
-      - name: deploy-staging
-        type: deploy2env
-        properties:
-          policy: example-multi-env-policy
-          env: staging
-
-      # deploy to prod env
-      - name: deploy-prod
-        type: deploy2env
-        properties:
-          policy: example-multi-env-policy
-          env: prod
diff --git a/test/e2e-multicluster-test/testdata/app/example-lite-envbinding-app.yaml b/test/e2e-multicluster-test/testdata/app/example-lite-envbinding-app.yaml
deleted file mode 100644
index 3e401228..00000000
--- a/test/e2e-multicluster-test/testdata/app/example-lite-envbinding-app.yaml
+++ /dev/null
@@ -1,32 +0,0 @@
-apiVersion: core.oam.dev/v1beta1
-kind: Application
-metadata:
-  name: example-lite-app
-  namespace: default
-spec:
-  components:
-    - name: data-worker
-      type: worker
-      properties:
-        image: busybox
-        cmd:
-          - sleep
-          - '1000000'
-  policies:
-    - name: example-multi-env-policy
-      type: env-binding
-      properties:
-        envs:
-          - name: test
-            placement:
-              clusterSelector:
-                name: TEST_CLUSTER_NAME
-
-  workflow:
-    steps:
-      # deploy to test env
-      - name: deploy-test
-        type: deploy2env
-        properties:
-          policy: example-multi-env-policy
-          env: test
diff --git a/test/e2e-test/definition_revision_test.go b/test/e2e-test/definition_revision_test.go
index 8d3297fc..a4acde59 100644
--- a/test/e2e-test/definition_revision_test.go
+++ b/test/e2e-test/definition_revision_test.go
@@ -28,10 +28,7 @@ import (
 	batchv1 "k8s.io/api/batch/v1"
 	corev1 "k8s.io/api/core/v1"
 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/utils/pointer"
 	"sigs.k8s.io/controller-runtime/pkg/client"
-	"sigs.k8s.io/yaml"
 
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
 	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
@@ -352,339 +349,6 @@ var _ = Describe("Test application of the specified definition version", func()
 		}, 30*time.Second, 3*time.Second).Should(Succeed())
 	})
 
-	PIt("Test deploy application which containing helm module", func() {
-		var (
-			appName  = "test-helm"
-			compName = "worker"
-		)
-
-		helmworkerV1 := HELMWorker.DeepCopy()
-		helmworkerV1.SetNamespace(namespace)
-		helmworkerV1.Spec.Workload.Definition = common.WorkloadGVK{
-			APIVersion: "batch/v1beta1",
-			Kind:       "CronJob",
-		}
-		helmworkerV1.Spec.Schematic = &common.Schematic{
-			HELM: &common.Helm{
-				Release: *util.Object2RawExtension(map[string]interface{}{
-					"chart": map[string]interface{}{
-						"spec": map[string]interface{}{
-							"chart":   "podinfo",
-							"version": "5.1.4",
-						},
-					},
-				}),
-				Repository: *util.Object2RawExtension(map[string]interface{}{
-					"url": "https://stefanprodan.github.io/podinfo",
-				}),
-			},
-		}
-		Expect(k8sClient.Create(ctx, helmworkerV1)).Should(Succeed())
-
-		helmworkerV1DefRev := new(v1beta1.DefinitionRevision)
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: "helm-worker-v1", Namespace: namespace}, helmworkerV1DefRev)
-		}, 15*time.Second, time.Second).Should(BeNil())
-
-		helmworkerV2 := new(v1beta1.ComponentDefinition)
-		Eventually(func() error {
-			err := k8sClient.Get(ctx, client.ObjectKey{Name: "helm-worker", Namespace: namespace}, helmworkerV2)
-			if err != nil {
-				return err
-			}
-			helmworkerV2.Spec.Workload.Definition = common.WorkloadGVK{
-				APIVersion: "apps/v1",
-				Kind:       "Deployment",
-			}
-			helmworkerV2.Spec.Workload.Type = "deployments.apps"
-			helmworkerV2.Spec.Schematic = &common.Schematic{
-				HELM: &common.Helm{
-					Release: *util.Object2RawExtension(map[string]interface{}{
-						"chart": map[string]interface{}{
-							"spec": map[string]interface{}{
-								"chart":   "podinfo",
-								"version": "5.2.0",
-							},
-						},
-					}),
-					Repository: *util.Object2RawExtension(map[string]interface{}{
-						"url": "https://stefanprodan.github.io/podinfo",
-					}),
-				},
-			}
-			return k8sClient.Update(ctx, helmworkerV2)
-		}, 15*time.Second, time.Second).Should(BeNil())
-
-		helmworkerV2DefRev := new(v1beta1.DefinitionRevision)
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: "helm-worker-v2", Namespace: namespace}, helmworkerV2DefRev)
-		}, 15*time.Second, time.Second).Should(BeNil())
-
-		app := v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: "helm-worker",
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": map[string]interface{}{
-								"tag": "5.1.2",
-							},
-						}),
-						Traits: []common.ApplicationTrait{
-							{
-								Type: "label",
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"labels": map[string]string{
-										"hello": "world",
-									},
-								}),
-							},
-						},
-					},
-				},
-			},
-		}
-
-		By("Create application")
-		Eventually(func() error {
-			return k8sClient.Create(ctx, app.DeepCopy())
-		}, 10*time.Second, 500*time.Millisecond).Should(Succeed())
-
-		By("Verify the workload(deployment) is created successfully by Helm")
-		deploy := &appsv1.Deployment{}
-		deployName := fmt.Sprintf("%s-%s-podinfo", appName, compName)
-		Eventually(func() bool {
-			err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy)
-			if err != nil {
-				return false
-			}
-			DeployLabels := deploy.GetLabels()
-			return DeployLabels["helm.sh/chart"] == "podinfo-5.2.0"
-		}, 120*time.Second, 5*time.Second).Should(BeTrue())
-
-		By("Verify trait is applied to the workload")
-		Eventually(func() bool {
-			deploy := &appsv1.Deployment{}
-			if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil {
-				return false
-			}
-			By("Verify patch trait is applied")
-			templateLabels := deploy.GetLabels()
-			return templateLabels["hello"] == "world"
-		}, 200*time.Second, 10*time.Second).Should(BeTrue())
-
-		app = v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: "helm-worker@v1",
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": map[string]interface{}{
-								"tag": "5.1.2",
-							},
-						}),
-					},
-				},
-			},
-		}
-
-		By("Create application")
-		Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(Succeed())
-
-		By("Verify the workload(deployment) is update successfully by Helm")
-		deploy = &appsv1.Deployment{}
-		Eventually(func() bool {
-			err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy)
-			if err != nil {
-				return false
-			}
-			DeployLabels := deploy.GetLabels()
-			return DeployLabels["helm.sh/chart"] != "podinfo-5.1.4"
-		}, 120*time.Second, 5*time.Second).Should(BeTrue())
-	})
-
-	It("Test deploy application which containing kube module", func() {
-		var (
-			appName  = "test-kube-app"
-			compName = "worker"
-		)
-
-		kubeworkerV1 := KUBEWorker.DeepCopy()
-		kubeworkerV1.Spec.Workload.Definition = common.WorkloadGVK{
-			APIVersion: "apps/v1",
-			Kind:       "Deployment",
-		}
-		kubeworkerV1.Spec.Schematic = &common.Schematic{
-			KUBE: &common.Kube{
-				Template: generateTemplate(KUBEWorkerV1Template),
-				Parameters: []common.KubeParameter{
-					{
-						Name:        "image",
-						ValueType:   common.StringType,
-						FieldPaths:  []string{"spec.template.spec.containers[0].image"},
-						Required:    pointer.Bool(true),
-						Description: pointer.String("test description"),
-					},
-				},
-			},
-		}
-		kubeworkerV1.SetNamespace(namespace)
-		Expect(k8sClient.Create(ctx, kubeworkerV1)).Should(Succeed())
-
-		kubeworkerV1DefRev := new(v1beta1.DefinitionRevision)
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: "kube-worker-v1", Namespace: namespace}, kubeworkerV1DefRev)
-		}, 15*time.Second, time.Second).Should(BeNil())
-
-		kubeworkerV2 := new(v1beta1.ComponentDefinition)
-		Eventually(func() error {
-			err := k8sClient.Get(ctx, client.ObjectKey{Name: "kube-worker", Namespace: namespace}, kubeworkerV2)
-			if err != nil {
-				return err
-			}
-			kubeworkerV2.Spec.Workload.Definition = common.WorkloadGVK{
-				APIVersion: "batch/v1",
-				Kind:       "Job",
-			}
-			kubeworkerV2.Spec.Workload.Type = "jobs.batch"
-			kubeworkerV2.Spec.Schematic = &common.Schematic{
-				KUBE: &common.Kube{
-					Template: generateTemplate(KUBEWorkerV2Template),
-					Parameters: []common.KubeParameter{
-						{
-							Name:        "image",
-							ValueType:   common.StringType,
-							FieldPaths:  []string{"spec.template.spec.containers[0].image"},
-							Required:    pointer.Bool(true),
-							Description: pointer.String("test description"),
-						},
-					},
-				},
-			}
-			return k8sClient.Update(ctx, kubeworkerV2)
-		}, 15*time.Second, time.Second).Should(BeNil())
-
-		kubeworkerV2DefRev := new(v1beta1.DefinitionRevision)
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: "kube-worker-v2", Namespace: namespace}, kubeworkerV2DefRev)
-		}, 15*time.Second, time.Second).Should(BeNil())
-
-		app := v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: "kube-worker",
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": "busybox",
-						}),
-						Traits: []common.ApplicationTrait{
-							{
-								Type: "label",
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"labels": map[string]string{
-										"hello": "world",
-									},
-								}),
-							},
-						},
-					},
-				},
-			},
-		}
-
-		By("Create application")
-		Eventually(func() error {
-			return k8sClient.Create(ctx, app.DeepCopy())
-		}, 10*time.Second, 500*time.Millisecond).Should(Succeed())
-
-		By("Verify the workload(job) is created successfully")
-		job := &batchv1.Job{}
-		jobName := compName
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: jobName, Namespace: namespace}, job)
-		}, 30*time.Second, 3*time.Second).Should(Succeed())
-
-		By("Verify trait is applied to the workload")
-		Labels := job.GetLabels()
-		Expect(Labels["hello"]).Should(Equal("world"))
-
-		By("Update Application and Specify the Definition version in Application")
-		app = v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: "kube-worker@v1",
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": "nginx",
-						}),
-						Traits: []common.ApplicationTrait{
-							{
-								Type: "label",
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"labels": map[string]string{
-										"hello": "kubevela",
-									},
-								}),
-							},
-						},
-					},
-				},
-			},
-		}
-		Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(Succeed())
-
-		By("Verify the workload(deployment) is created successfully")
-		deploy := &appsv1.Deployment{}
-		deployName := compName
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy)
-		}, 30*time.Second, 3*time.Second).Should(Succeed())
-
-		By("Verify trait is applied to the workload")
-		webserviceV1Labels := deploy.GetLabels()
-		Expect(webserviceV1Labels["hello"]).Should(Equal("kubevela"))
-
-		By("Application specifies the wrong version of the Definition, it will raise an error")
-		app = v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: "kube-worker@a1",
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": "nginx",
-						}),
-					},
-				},
-			},
-		}
-		Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(HaveOccurred())
-	})
-
 	// refer to https://github.com/oam-dev/kubevela/discussions/1810#discussioncomment-914295
 	It("Test k8s resources created by application whether with correct label", func() {
 		var (
@@ -892,11 +556,6 @@ var exposeWithNoTemplate = &v1beta1.TraitDefinition{
 	},
 }
 
-func generateTemplate(template string) runtime.RawExtension {
-	b, _ := yaml.YAMLToJSON([]byte(template))
-	return runtime.RawExtension{Raw: b}
-}
-
 var webServiceV1Template = `output: {
 	apiVersion: "apps/v1"
 	kind:       "Deployment"
diff --git a/test/e2e-test/helm_app_test.go b/test/e2e-test/helm_app_test.go
deleted file mode 100644
index d335a342..00000000
--- a/test/e2e-test/helm_app_test.go
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package controllers_test
-
-import (
-	"context"
-	"errors"
-	"fmt"
-	"strings"
-	"time"
-
-	"github.com/oam-dev/kubevela/apis/types"
-
-	appsv1 "k8s.io/api/apps/v1"
-	corev1 "k8s.io/api/core/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"sigs.k8s.io/controller-runtime/pkg/client"
-
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
-	"github.com/oam-dev/kubevela/pkg/oam/util"
-
-	. "github.com/onsi/ginkgo/v2"
-	. "github.com/onsi/gomega"
-)
-
-var _ = Describe("Test application containing helm module", func() {
-	ctx := context.Background()
-	var (
-		appName  = "test-app"
-		compName = "test-comp"
-		cdName   = "webapp-chart"
-		wdName   = "webapp-chart-wd"
-		tdName   = "virtualgroup"
-	)
-	var namespace string
-	var app v1beta1.Application
-	var ns corev1.Namespace
-
-	BeforeEach(func() {
-		namespace = randomNamespaceName("helm-e2e-test")
-		ns = corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}}
-		Eventually(
-			func() error {
-				return k8sClient.Create(ctx, &ns)
-			},
-			time.Second*3, time.Millisecond*300).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
-
-		cd := v1beta1.ComponentDefinition{}
-		cd.SetName(cdName)
-		cd.SetNamespace(namespace)
-		cd.Spec.Workload.Definition = common.WorkloadGVK{APIVersion: "apps/v1", Kind: "Deployment"}
-		cd.Spec.Schematic = &common.Schematic{
-			HELM: &common.Helm{
-				Release: *util.Object2RawExtension(map[string]interface{}{
-					"chart": map[string]interface{}{
-						"spec": map[string]interface{}{
-							"chart":   "podinfo",
-							"version": "5.1.4",
-						},
-					},
-				}),
-				Repository: *util.Object2RawExtension(map[string]interface{}{
-					"url": "https://charts.kubevela.net/example/",
-				}),
-			},
-		}
-		Expect(k8sClient.Create(ctx, &cd)).Should(Succeed())
-
-		By("Install a patch trait used to test CUE module")
-		td := v1beta1.TraitDefinition{}
-		td.SetName(tdName)
-		td.SetNamespace(namespace)
-		td.Spec.AppliesToWorkloads = []string{"deployments.apps"}
-		td.Spec.Schematic = &common.Schematic{
-			CUE: &common.CUE{
-				Template: `patch: {
-      	spec: template: {
-      		metadata: labels: {
-      			if parameter.type == "namespace" {
-      				"app.namespace.virtual.group": parameter.group
-      			}
-      			if parameter.type == "cluster" {
-      				"app.cluster.virtual.group": parameter.group
-      			}
-      		}
-      	}
-      }
-      parameter: {
-      	group: *"default" | string
-      	type:  *"namespace" | string
-      }`,
-			},
-		}
-		Expect(k8sClient.Create(ctx, &td)).Should(Succeed())
-
-		By("Add 'deployments.apps' to scaler's appliesToWorkloads")
-		scalerTd := v1beta1.TraitDefinition{}
-		Expect(k8sClient.Get(ctx, client.ObjectKey{Name: "scaler", Namespace: "vela-system"}, &scalerTd)).Should(Succeed())
-		scalerTd.Spec.AppliesToWorkloads = []string{"deployments.apps", "webservice", "worker"}
-		scalerTd.SetResourceVersion("")
-		Expect(k8sClient.Patch(ctx, &scalerTd, client.Merge)).Should(Succeed())
-	})
-
-	AfterEach(func() {
-		By("Clean up resources after a test")
-
-		k8sClient.DeleteAllOf(ctx, &v1beta1.Application{}, client.InNamespace(namespace))
-		k8sClient.DeleteAllOf(ctx, &v1beta1.ComponentDefinition{}, client.InNamespace(namespace))
-		k8sClient.DeleteAllOf(ctx, &v1beta1.WorkloadDefinition{}, client.InNamespace(namespace))
-		k8sClient.DeleteAllOf(ctx, &v1beta1.TraitDefinition{}, client.InNamespace(namespace))
-		By(fmt.Sprintf("Delete the entire namespaceName %s", ns.Name))
-		Expect(k8sClient.Delete(ctx, &ns, client.PropagationPolicy(metav1.DeletePropagationForeground))).Should(Succeed())
-		By("Remove 'deployments.apps' from scaler's appliesToWorkloads")
-		scalerTd := v1beta1.TraitDefinition{}
-		Expect(k8sClient.Get(ctx, client.ObjectKey{Name: "scaler", Namespace: "vela-system"}, &scalerTd)).Should(Succeed())
-		scalerTd.Spec.AppliesToWorkloads = []string{"webservice", "worker"}
-		scalerTd.SetResourceVersion("")
-		Expect(k8sClient.Patch(ctx, &scalerTd, client.Merge)).Should(Succeed())
-	})
-
-	PIt("Test deploy an application containing helm module", func() {
-		app = v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: cdName,
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": map[string]interface{}{
-								"tag": "5.1.2",
-							},
-						}),
-						Traits: []common.ApplicationTrait{
-							{
-								Type: "scaler",
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"replicas": 0,
-								}),
-							},
-							{
-								Type: tdName,
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"group": "my-group",
-									"type":  "cluster",
-								}),
-							},
-						},
-					},
-				},
-			},
-		}
-		By("Create application")
-		Eventually(func() error {
-			return k8sClient.Create(ctx, app.DeepCopy())
-		}, 10*time.Second, 500*time.Millisecond).Should(Succeed())
-
-		By("Verify the workload(deployment) is created successfully by Helm")
-		deploy := &appsv1.Deployment{}
-		deployName := fmt.Sprintf("%s-%s-podinfo", appName, compName)
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy)
-		}, 120*time.Second, 5*time.Second).Should(Succeed())
-
-		By("Verify two traits are applied to the workload")
-		Eventually(func() bool {
-			deploy := &appsv1.Deployment{}
-			if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil {
-				return false
-			}
-			By("Verify patch trait is applied")
-			templateLabels := deploy.Spec.Template.Labels
-			if templateLabels["app.cluster.virtual.group"] != "my-group" {
-				return false
-			}
-			By("Verify scaler trait is applied")
-			if *deploy.Spec.Replicas != 0 {
-				return false
-			}
-			By("Verify application's settings override chart default values")
-			// the default value of 'image.tag' is 5.1.4 in the chart, but settings reset it to 5.1.2
-			return strings.HasSuffix(deploy.Spec.Template.Spec.Containers[0].Image, "5.1.2")
-			// it takes pretty long time to fetch chart and install the Helm release
-		}, 120*time.Second, 10*time.Second).Should(BeTrue())
-
-		By("Update the application")
-		app = v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: cdName,
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": map[string]interface{}{
-								"tag": "5.1.3", // change 5.1.2 => 5.1.3
-							},
-						}),
-						Traits: []common.ApplicationTrait{
-							{
-								Type: "scaler",
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"replicas": 1, // change 0 => 1
-								}),
-							},
-							{
-								Type: tdName,
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"group": "my-group-0", // change my-group => my-group-0
-									"type":  "cluster",
-								}),
-							},
-						},
-					},
-				},
-			},
-		}
-		Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(Succeed())
-
-		By("Verify the changes are applied to the workload")
-		Eventually(func() bool {
-			deploy := &appsv1.Deployment{}
-			if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil {
-				return false
-			}
-			By("Verify new patch trait is applied")
-			templateLabels := deploy.Spec.Template.Labels
-			if templateLabels["app.cluster.virtual.group"] != "my-group-0" {
-				return false
-			}
-			By("Verify new scaler trait is applied")
-			if *deploy.Spec.Replicas != 1 {
-				return false
-			}
-			By("Verify new application's settings override chart default values")
-			return strings.HasSuffix(deploy.Spec.Template.Spec.Containers[0].Image, "5.1.3")
-		}, 120*time.Second, 10*time.Second).Should(BeTrue())
-	})
-
-	It("Test deploy an application containing helm module defined by workloadDefinition", func() {
-
-		workloaddef := v1beta1.WorkloadDefinition{}
-		workloaddef.SetName(wdName)
-		workloaddef.SetNamespace(namespace)
-		workloaddef.Spec.Reference = common.DefinitionReference{Name: "deployments.apps", Version: "v1"}
-		workloaddef.Spec.Schematic = &common.Schematic{
-			HELM: &common.Helm{
-				Release: *util.Object2RawExtension(map[string]interface{}{
-					"chart": map[string]interface{}{
-						"spec": map[string]interface{}{
-							"chart":   "podinfo",
-							"version": "5.1.4",
-						},
-					},
-				}),
-				Repository: *util.Object2RawExtension(map[string]interface{}{
-					"url": "https://charts.kubevela.net/example/",
-				}),
-			},
-		}
-		By("register workloadDefinition")
-		Expect(k8sClient.Create(ctx, &workloaddef)).Should(Succeed())
-
-		appTestName := "test-app-refer-to-workloaddef"
-		appTest := v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appTestName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: wdName,
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": map[string]interface{}{
-								"tag": "5.1.2",
-							},
-						}),
-					},
-				},
-			},
-		}
-		By("Create application")
-		Eventually(func() error {
-			return k8sClient.Create(ctx, appTest.DeepCopy())
-		}, 10*time.Second, 500*time.Millisecond).Should(Succeed())
-
-		By("Verify the workload(deployment) is created successfully by Helm")
-		deploy := &appsv1.Deployment{}
-		deployName := fmt.Sprintf("%s-%s-podinfo", appTestName, compName)
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy)
-		}, 240*time.Second, 5*time.Second).Should(Succeed())
-	})
-
-	It("Test deploy an application containing helm module and the component refer to autodetect type workload", func() {
-		cd := v1beta1.ComponentDefinition{}
-		cd.SetName("podinfo")
-		cd.SetNamespace(namespace)
-		cd.Spec.Schematic = &common.Schematic{
-			HELM: &common.Helm{
-				Release: *util.Object2RawExtension(map[string]interface{}{
-					"chart": map[string]interface{}{
-						"spec": map[string]interface{}{
-							"chart":   "podinfo",
-							"version": "5.1.4",
-						},
-					},
-				}),
-				Repository: *util.Object2RawExtension(map[string]interface{}{
-					"url": "https://charts.kubevela.net/example/",
-				}),
-			},
-		}
-		cd.Spec.Workload.Type = types.AutoDetectWorkloadDefinition
-		Expect(k8sClient.Create(ctx, &cd)).Should(Succeed())
-
-		newAppName := "test-autodetect"
-		newApp := v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      newAppName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: "podinfo",
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": map[string]interface{}{
-								"tag": "5.1.2",
-							},
-						}),
-					},
-				},
-			},
-		}
-		By("Create application")
-		Eventually(func() error {
-			return k8sClient.Create(ctx, newApp.DeepCopy())
-		}, 10*time.Second, 500*time.Millisecond).Should(Succeed())
-
-		By("Verify the workload(deployment) is created successfully by Helm")
-		deploy := &appsv1.Deployment{}
-		deployName := fmt.Sprintf("%s-%s-podinfo", newAppName, compName)
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy)
-		}, 120*time.Second, 5*time.Second).Should(Succeed())
-	})
-
-	It("Test store JSON schema of Helm Chart in ConfigMap", func() {
-		By("Get the ConfigMap")
-		cmName := fmt.Sprintf("component-schema-%s", cdName)
-		Eventually(func() error {
-			cm := &corev1.ConfigMap{}
-			if err := k8sClient.Get(ctx, client.ObjectKey{Name: cmName, Namespace: namespace}, cm); err != nil {
-				return err
-			}
-			if cm.Data[types.OpenapiV3JSONSchema] == "" {
-				return errors.New("json schema is not found in the ConfigMap")
-			}
-			return nil
-		}, 60*time.Second, 500*time.Millisecond).Should(Succeed())
-	})
-})
diff --git a/test/e2e-test/kube_app_test.go b/test/e2e-test/kube_app_test.go
deleted file mode 100644
index 668dc468..00000000
--- a/test/e2e-test/kube_app_test.go
+++ /dev/null
@@ -1,357 +0,0 @@
-/*
-Copyright 2021 The KubeVela Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package controllers_test
-
-import (
-	"context"
-	"errors"
-	"fmt"
-	"time"
-
-	appsv1 "k8s.io/api/apps/v1"
-	corev1 "k8s.io/api/core/v1"
-	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
-	"k8s.io/apimachinery/pkg/runtime"
-	"k8s.io/utils/pointer"
-	"sigs.k8s.io/controller-runtime/pkg/client"
-	"sigs.k8s.io/yaml"
-
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/common"
-	"github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1"
-	"github.com/oam-dev/kubevela/apis/types"
-	"github.com/oam-dev/kubevela/pkg/oam/util"
-
-	. "github.com/onsi/ginkgo/v2"
-	. "github.com/onsi/gomega"
-)
-
-var _ = Describe("Test application containing kube module", func() {
-	ctx := context.Background()
-	var (
-		appName  = "test-app"
-		compName = "test-comp"
-		cdName   = "test-kube-worker"
-		wdName   = "test-kube-worker-wd"
-		tdName   = "test-virtualgroup"
-	)
-	var namespace string
-	var app v1beta1.Application
-	var ns corev1.Namespace
-
-	var testTemplate = func() runtime.RawExtension {
-		yamlStr := `apiVersion: apps/v1
-kind: Deployment
-spec:
-  selector:
-    matchLabels:
-      app: nginx
-  template:
-    metadata:
-      labels:
-        app: nginx
-    spec:
-      containers:
-      - name: nginx
-      ports:
-      - containerPort: 80 `
-		b, _ := yaml.YAMLToJSON([]byte(yamlStr))
-		return runtime.RawExtension{Raw: b}
-	}
-
-	BeforeEach(func() {
-		namespace = randomNamespaceName("kube-e2e-test")
-		ns = corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: namespace}}
-		Eventually(
-			func() error {
-				return k8sClient.Create(ctx, &ns)
-			},
-			time.Second*3, time.Millisecond*300).Should(SatisfyAny(BeNil(), &util.AlreadyExistMatcher{}))
-
-		cd := v1beta1.ComponentDefinition{}
-		cd.SetName(cdName)
-		cd.SetNamespace(namespace)
-		cd.Spec.Workload.Definition = common.WorkloadGVK{APIVersion: "apps/v1", Kind: "Deployment"}
-		cd.Spec.Schematic = &common.Schematic{
-			KUBE: &common.Kube{
-				Template: testTemplate(),
-				Parameters: []common.KubeParameter{
-					{
-						Name:        "image",
-						ValueType:   common.StringType,
-						FieldPaths:  []string{"spec.template.spec.containers[0].image"},
-						Required:    pointer.Bool(true),
-						Description: pointer.String("test description"),
-					},
-				},
-			},
-		}
-		Expect(k8sClient.Create(ctx, &cd)).Should(Succeed())
-
-		By("Install a patch trait used to test CUE module")
-		td := v1beta1.TraitDefinition{}
-		td.SetName(tdName)
-		td.SetNamespace(namespace)
-		td.Spec.AppliesToWorkloads = []string{"deployments.apps"}
-		td.Spec.Schematic = &common.Schematic{
-			CUE: &common.CUE{
-				Template: `patch: {
-      	spec: template: {
-      		metadata: labels: {
-      			if parameter.type == "namespace" {
-      				"app.namespace.virtual.group": parameter.group
-      			}
-      			if parameter.type == "cluster" {
-      				"app.cluster.virtual.group": parameter.group
-      			}
-      		}
-      	}
-      }
-      parameter: {
-      	group: *"default" | string
-      	type:  *"namespace" | string
-      }`,
-			},
-		}
-		Expect(k8sClient.Create(ctx, &td)).Should(Succeed())
-
-		By("Verify ComponentDefinition and TraitDefinition are created successfully")
-		Eventually(func() error {
-			if err := k8sClient.Get(ctx, client.ObjectKey{Name: cdName, Namespace: namespace}, &v1beta1.ComponentDefinition{}); err != nil {
-				return err
-			}
-			if err := k8sClient.Get(ctx, client.ObjectKey{Name: tdName, Namespace: namespace}, &v1beta1.TraitDefinition{}); err != nil {
-				return err
-			}
-			return nil
-		}, 20*time.Second, 500*time.Millisecond).Should(Succeed())
-
-		By("Add 'deployments.apps' to scaler's appliesToWorkloads")
-		scalerTd := v1beta1.TraitDefinition{}
-		Expect(k8sClient.Get(ctx, client.ObjectKey{Name: "scaler", Namespace: "vela-system"}, &scalerTd)).Should(Succeed())
-		scalerTd.Spec.AppliesToWorkloads = []string{"deployments.apps", "webservice", "worker"}
-		scalerTd.SetResourceVersion("")
-		Expect(k8sClient.Patch(ctx, &scalerTd, client.Merge)).Should(Succeed())
-	})
-
-	AfterEach(func() {
-		By("Clean up resources after a test")
-		k8sClient.DeleteAllOf(ctx, &v1beta1.Application{}, client.InNamespace(namespace))
-		k8sClient.DeleteAllOf(ctx, &v1beta1.ComponentDefinition{}, client.InNamespace(namespace))
-		k8sClient.DeleteAllOf(ctx, &v1beta1.WorkloadDefinition{}, client.InNamespace(namespace))
-		k8sClient.DeleteAllOf(ctx, &v1beta1.TraitDefinition{}, client.InNamespace(namespace))
-		By(fmt.Sprintf("Delete the entire namespaceName %s", ns.Name))
-		Expect(k8sClient.Delete(ctx, &ns, client.PropagationPolicy(metav1.DeletePropagationForeground))).Should(Succeed())
-
-		By("Remove 'deployments.apps' from scaler's appliesToWorkloads")
-		scalerTd := v1beta1.TraitDefinition{}
-		Expect(k8sClient.Get(ctx, client.ObjectKey{Name: "scaler", Namespace: "vela-system"}, &scalerTd)).Should(Succeed())
-		scalerTd.Spec.AppliesToWorkloads = []string{"webservice", "worker"}
-		scalerTd.SetResourceVersion("")
-		Expect(k8sClient.Patch(ctx, &scalerTd, client.Merge)).Should(Succeed())
-	})
-
-	It("Test deploy an application containing kube module", func() {
-		app = v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: cdName,
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": "nginx:1.14.0",
-						}),
-						Traits: []common.ApplicationTrait{
-							{
-								Type: "scaler",
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"replicas": 2,
-								}),
-							},
-							{
-								Type: tdName,
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"group": "my-group",
-									"type":  "cluster",
-								}),
-							},
-						},
-					},
-				},
-			},
-		}
-		By("Create application")
-		Eventually(func() error {
-			return k8sClient.Create(ctx, app.DeepCopy())
-		}, 10*time.Second, 500*time.Millisecond).Should(Succeed())
-
-		By("Verify the workload(deployment) is created successfully")
-		deploy := &appsv1.Deployment{}
-		deployName := compName
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy)
-		}, 30*time.Second, 3*time.Second).Should(Succeed())
-
-		By("Verify two traits are applied to the workload")
-		Eventually(func() bool {
-			deploy := &appsv1.Deployment{}
-			if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil {
-				return false
-			}
-			By("Verify patch trait is applied")
-			templateLabels := deploy.Spec.Template.Labels
-			if templateLabels["app.cluster.virtual.group"] != "my-group" {
-				return false
-			}
-			By("Verify scaler trait is applied")
-			if *deploy.Spec.Replicas != 2 {
-				return false
-			}
-			By("Verify parameter is applied")
-			return deploy.Spec.Template.Spec.Containers[0].Image == "nginx:1.14.0"
-		}, 15*time.Second, 3*time.Second).Should(BeTrue())
-
-		By("Update the application")
-		app = v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: cdName,
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": "nginx:1.14.1", // nginx:1.14.0 => nginx:1.14.1
-						}),
-						Traits: []common.ApplicationTrait{
-							{
-								Type: "scaler",
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"replicas": 3, // change 2 => 3
-								}),
-							},
-							{
-								Type: tdName,
-								Properties: util.Object2RawExtension(map[string]interface{}{
-									"group": "my-group-0", // change my-group => my-group-0
-									"type":  "cluster",
-								}),
-							},
-						},
-					},
-				},
-			},
-		}
-		Expect(k8sClient.Patch(ctx, &app, client.Merge)).Should(Succeed())
-
-		By("Verify the workload(deployment) is created successfully")
-		deploy = &appsv1.Deployment{}
-		deployName = compName
-
-		By("Verify the changes are applied to the workload")
-		Eventually(func() bool {
-			deploy := &appsv1.Deployment{}
-			if err := k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy); err != nil {
-				return false
-			}
-			By("Verify new patch trait is applied")
-			templateLabels := deploy.Spec.Template.Labels
-			if templateLabels["app.cluster.virtual.group"] != "my-group-0" {
-				return false
-			}
-			By("Verify new scaler trait is applied")
-			if *deploy.Spec.Replicas != 3 {
-				return false
-			}
-			By("Verify new parameter is applied")
-			return deploy.Spec.Template.Spec.Containers[0].Image == "nginx:1.14.1"
-		}, 60*time.Second, 10*time.Second).Should(BeTrue())
-	})
-
-	It("Test deploy an application containing kube module defined by workloadDefinition", func() {
-		workloaddef := v1beta1.WorkloadDefinition{}
-		workloaddef.SetName(wdName)
-		workloaddef.SetNamespace(namespace)
-		workloaddef.Spec.Reference = common.DefinitionReference{Name: "deployments.apps", Version: "v1"}
-		workloaddef.Spec.Schematic = &common.Schematic{
-			KUBE: &common.Kube{
-				Template: testTemplate(),
-				Parameters: []common.KubeParameter{
-					{
-						Name:        "image",
-						ValueType:   common.StringType,
-						FieldPaths:  []string{"spec.template.spec.containers[0].image"},
-						Required:    pointer.Bool(true),
-						Description: pointer.String("test description"),
-					},
-				},
-			},
-		}
-		By("register workloadDefinition")
-		Expect(k8sClient.Create(ctx, &workloaddef)).Should(Succeed())
-
-		appTestName := "test-app-refer-to-workloaddef"
-		appTest := v1beta1.Application{
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      appTestName,
-				Namespace: namespace,
-			},
-			Spec: v1beta1.ApplicationSpec{
-				Components: []common.ApplicationComponent{
-					{
-						Name: compName,
-						Type: cdName,
-						Properties: util.Object2RawExtension(map[string]interface{}{
-							"image": "nginx:1.14.0",
-						}),
-					},
-				},
-			},
-		}
-		By("Create application")
-		Eventually(func() error {
-			return k8sClient.Create(ctx, appTest.DeepCopy())
-		}, 10*time.Second, 500*time.Millisecond).Should(Succeed())
-
-		By("Verify the workload(deployment) is created successfully")
-		deploy := &appsv1.Deployment{}
-		deployName := compName
-		Eventually(func() error {
-			return k8sClient.Get(ctx, client.ObjectKey{Name: deployName, Namespace: namespace}, deploy)
-		}, 15*time.Second, 3*time.Second).Should(Succeed())
-	})
-
-	It("Test store JSON schema of Kube parameter in ConfigMap", func() {
-		By("Get the ConfigMap")
-		cmName := fmt.Sprintf("component-schema-%s", cdName)
-		Eventually(func() error {
-			cm := &corev1.ConfigMap{}
-			if err := k8sClient.Get(ctx, client.ObjectKey{Name: cmName, Namespace: namespace}, cm); err != nil {
-				return err
-			}
-			if cm.Data[types.OpenapiV3JSONSchema] == "" {
-				return errors.New("json schema is not found in the ConfigMap")
-			}
-			return nil
-		}, 60*time.Second, 5*time.Second).Should(Succeed())
-	})
-})