func (in *QueryLimitSpec) DeepCopy() *QueryLimitSpec {
	if in == nil {
		return nil
	}
	out := new(QueryLimitSpec)
	in.DeepCopyInto(out)
	return out
}
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QueryLimitSpec.
package v1beta1
import (
	"k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	runtime "k8s.io/apimachinery/pkg/runtime"
)
func (in *AuthenticationSpec) DeepCopyInto(out *AuthenticationSpec) {
	*out = *in
	if in.OIDC != nil {
		in, out := &in.OIDC, &out.OIDC
		*out = new(OIDCSpec)
		(*in).DeepCopyInto(*out)
	}
}
func (in *AuthenticationSpec) DeepCopy() *AuthenticationSpec {
	if in == nil {
		return nil
	}
	out := new(AuthenticationSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *AuthorizationSpec) DeepCopyInto(out *AuthorizationSpec) {
	*out = *in
	if in.OPA != nil {
		in, out := &in.OPA, &out.OPA
		*out = new(OPASpec)
		**out = **in
	}
	if in.Roles != nil {
		in, out := &in.Roles, &out.Roles
		*out = make([]RoleSpec, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.RoleBindings != nil {
		in, out := &in.RoleBindings, &out.RoleBindings
		*out = make([]RoleBindingsSpec, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *AuthorizationSpec) DeepCopy() *AuthorizationSpec {
	if in == nil {
		return nil
	}
	out := new(AuthorizationSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *IngestionLimitSpec) DeepCopyInto(out *IngestionLimitSpec) {
	*out = *in
}
func (in *IngestionLimitSpec) DeepCopy() *IngestionLimitSpec {
	if in == nil {
		return nil
	}
	out := new(IngestionLimitSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *LimitsSpec) DeepCopyInto(out *LimitsSpec) {
	*out = *in
	if in.Global != nil {
		in, out := &in.Global, &out.Global
		*out = new(LimitsTemplateSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Tenants != nil {
		in, out := &in.Tenants, &out.Tenants
		*out = make(map[string]LimitsTemplateSpec, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
}
func (in *LimitsSpec) DeepCopy() *LimitsSpec {
	if in == nil {
		return nil
	}
	out := new(LimitsSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *LimitsTemplateSpec) DeepCopyInto(out *LimitsTemplateSpec) {
	*out = *in
	if in.IngestionLimits != nil {
		in, out := &in.IngestionLimits, &out.IngestionLimits
		*out = new(IngestionLimitSpec)
		**out = **in
	}
	if in.QueryLimits != nil {
		in, out := &in.QueryLimits, &out.QueryLimits
		*out = new(QueryLimitSpec)
		**out = **in
	}
}
func (in *LimitsTemplateSpec) DeepCopy() *LimitsTemplateSpec {
	if in == nil {
		return nil
	}
	out := new(LimitsTemplateSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *LokiComponentSpec) DeepCopyInto(out *LokiComponentSpec) {
	*out = *in
	if in.NodeSelector != nil {
		in, out := &in.NodeSelector, &out.NodeSelector
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Tolerations != nil {
		in, out := &in.Tolerations, &out.Tolerations
		*out = make([]v1.Toleration, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *LokiComponentSpec) DeepCopy() *LokiComponentSpec {
	if in == nil {
		return nil
	}
	out := new(LokiComponentSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *LokiStack) DeepCopyInto(out *LokiStack) {
	*out = *in
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	out.TypeMeta = in.TypeMeta
}
func (in *LokiStack) DeepCopy() *LokiStack {
	if in == nil {
		return nil
	}
	out := new(LokiStack)
	in.DeepCopyInto(out)
	return out
}
func (in *LokiStack) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *LokiStackComponentStatus) DeepCopyInto(out *LokiStackComponentStatus) {
	*out = *in
	if in.Compactor != nil {
		in, out := &in.Compactor, &out.Compactor
		*out = make(PodStatusMap, len(*in))
		for key, val := range *in {
			var outVal []string
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = make([]string, len(*in))
				copy(*out, *in)
			}
			(*out)[key] = outVal
		}
	}
	if in.Distributor != nil {
		in, out := &in.Distributor, &out.Distributor
		*out = make(PodStatusMap, len(*in))
		for key, val := range *in {
			var outVal []string
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = make([]string, len(*in))
				copy(*out, *in)
			}
			(*out)[key] = outVal
		}
	}
	if in.Ingester != nil {
		in, out := &in.Ingester, &out.Ingester
		*out = make(PodStatusMap, len(*in))
		for key, val := range *in {
			var outVal []string
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = make([]string, len(*in))
				copy(*out, *in)
			}
			(*out)[key] = outVal
		}
	}
	if in.Querier != nil {
		in, out := &in.Querier, &out.Querier
		*out = make(PodStatusMap, len(*in))
		for key, val := range *in {
			var outVal []string
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = make([]string, len(*in))
				copy(*out, *in)
			}
			(*out)[key] = outVal
		}
	}
	if in.QueryFrontend != nil {
		in, out := &in.QueryFrontend, &out.QueryFrontend
		*out = make(PodStatusMap, len(*in))
		for key, val := range *in {
			var outVal []string
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = make([]string, len(*in))
				copy(*out, *in)
			}
			(*out)[key] = outVal
		}
	}
	if in.Gateway != nil {
		in, out := &in.Gateway, &out.Gateway
		*out = make(PodStatusMap, len(*in))
		for key, val := range *in {
			var outVal []string
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = make([]string, len(*in))
				copy(*out, *in)
			}
			(*out)[key] = outVal
		}
	}
}
func (in *LokiStackComponentStatus) DeepCopy() *LokiStackComponentStatus {
	if in == nil {
		return nil
	}
	out := new(LokiStackComponentStatus)
	in.DeepCopyInto(out)
	return out
}
func (in *LokiStackList) DeepCopyInto(out *LokiStackList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]LokiStack, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *LokiStackList) DeepCopy() *LokiStackList {
	if in == nil {
		return nil
	}
	out := new(LokiStackList)
	in.DeepCopyInto(out)
	return out
}
func (in *LokiStackList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *LokiStackSpec) DeepCopyInto(out *LokiStackSpec) {
	*out = *in
	out.Storage = in.Storage
	if in.Limits != nil {
		in, out := &in.Limits, &out.Limits
		*out = new(LimitsSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Template != nil {
		in, out := &in.Template, &out.Template
		*out = new(LokiTemplateSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Tenants != nil {
		in, out := &in.Tenants, &out.Tenants
		*out = new(TenantsSpec)
		(*in).DeepCopyInto(*out)
	}
}
func (in *LokiStackSpec) DeepCopy() *LokiStackSpec {
	if in == nil {
		return nil
	}
	out := new(LokiStackSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *LokiStackStatus) DeepCopyInto(out *LokiStackStatus) {
	*out = *in
	in.Components.DeepCopyInto(&out.Components)
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]metav1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}
func (in *LokiStackStatus) DeepCopy() *LokiStackStatus {
	if in == nil {
		return nil
	}
	out := new(LokiStackStatus)
	in.DeepCopyInto(out)
	return out
}
func (in *LokiTemplateSpec) DeepCopyInto(out *LokiTemplateSpec) {
	*out = *in
	if in.Compactor != nil {
		in, out := &in.Compactor, &out.Compactor
		*out = new(LokiComponentSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Distributor != nil {
		in, out := &in.Distributor, &out.Distributor
		*out = new(LokiComponentSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Ingester != nil {
		in, out := &in.Ingester, &out.Ingester
		*out = new(LokiComponentSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Querier != nil {
		in, out := &in.Querier, &out.Querier
		*out = new(LokiComponentSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.QueryFrontend != nil {
		in, out := &in.QueryFrontend, &out.QueryFrontend
		*out = new(LokiComponentSpec)
		(*in).DeepCopyInto(*out)
	}
	if in.Gateway != nil {
		in, out := &in.Gateway, &out.Gateway
		*out = new(LokiComponentSpec)
		(*in).DeepCopyInto(*out)
	}
}
func (in *LokiTemplateSpec) DeepCopy() *LokiTemplateSpec {
	if in == nil {
		return nil
	}
	out := new(LokiTemplateSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *OIDCSpec) DeepCopyInto(out *OIDCSpec) {
	*out = *in
	if in.Secret != nil {
		in, out := &in.Secret, &out.Secret
		*out = new(TenantSecretSpec)
		**out = **in
	}
}
func (in *OIDCSpec) DeepCopy() *OIDCSpec {
	if in == nil {
		return nil
	}
	out := new(OIDCSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *OPASpec) DeepCopyInto(out *OPASpec) {
	*out = *in
}
func (in *OPASpec) DeepCopy() *OPASpec {
	if in == nil {
		return nil
	}
	out := new(OPASpec)
	in.DeepCopyInto(out)
	return out
}
func (in *ObjectStorageSecretSpec) DeepCopyInto(out *ObjectStorageSecretSpec) {
	*out = *in
}
func (in *ObjectStorageSecretSpec) DeepCopy() *ObjectStorageSecretSpec {
	if in == nil {
		return nil
	}
	out := new(ObjectStorageSecretSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *ObjectStorageSpec) DeepCopyInto(out *ObjectStorageSpec) {
	*out = *in
	out.Secret = in.Secret
}
func (in *ObjectStorageSpec) DeepCopy() *ObjectStorageSpec {
	if in == nil {
		return nil
	}
	out := new(ObjectStorageSpec)
	in.DeepCopyInto(out)
	return out
}
func (in PodStatusMap) DeepCopyInto(out *PodStatusMap) {
	{
		in := &in
		*out = make(PodStatusMap, len(*in))
		for key, val := range *in {
			var outVal []string
			if val == nil {
				(*out)[key] = nil
			} else {
				in, out := &val, &outVal
				*out = make([]string, len(*in))
				copy(*out, *in)
			}
			(*out)[key] = outVal
		}
	}
}
func (in PodStatusMap) DeepCopy() PodStatusMap {
	if in == nil {
		return nil
	}
	out := new(PodStatusMap)
	in.DeepCopyInto(out)
	return *out
}
func (in *QueryLimitSpec) DeepCopyInto(out *QueryLimitSpec) {
	*out = *in
}