//go:build !ignore_autogenerated
// +build !ignore_autogenerated

// Copyright 2024 PingCAP, Inc.
//
// 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.

// Code generated by deepcopy-gen. DO NOT EDIT.

package v1alpha1

import (
	corev1 "k8s.io/api/core/v1"
	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	runtime "k8s.io/apimachinery/pkg/runtime"
)

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Cluster) DeepCopyInto(out *Cluster) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Cluster.
func (in *Cluster) DeepCopy() *Cluster {
	if in == nil {
		return nil
	}
	out := new(Cluster)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *Cluster) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterList) DeepCopyInto(out *ClusterList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]Cluster, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterList.
func (in *ClusterList) DeepCopy() *ClusterList {
	if in == nil {
		return nil
	}
	out := new(ClusterList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *ClusterList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterReference) DeepCopyInto(out *ClusterReference) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterReference.
func (in *ClusterReference) DeepCopy() *ClusterReference {
	if in == nil {
		return nil
	}
	out := new(ClusterReference)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
	*out = *in
	if in.SuspendAction != nil {
		in, out := &in.SuspendAction, &out.SuspendAction
		*out = new(SuspendAction)
		**out = **in
	}
	if in.TLSCluster != nil {
		in, out := &in.TLSCluster, &out.TLSCluster
		*out = new(TLSCluster)
		**out = **in
	}
	if in.RevisionHistoryLimit != nil {
		in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSpec.
func (in *ClusterSpec) DeepCopy() *ClusterSpec {
	if in == nil {
		return nil
	}
	out := new(ClusterSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus) {
	*out = *in
	if in.Components != nil {
		in, out := &in.Components, &out.Components
		*out = make([]ComponentStatus, len(*in))
		copy(*out, *in)
	}
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]v1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterStatus.
func (in *ClusterStatus) DeepCopy() *ClusterStatus {
	if in == nil {
		return nil
	}
	out := new(ClusterStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *CommonStatus) DeepCopyInto(out *CommonStatus) {
	*out = *in
	if in.Conditions != nil {
		in, out := &in.Conditions, &out.Conditions
		*out = make([]v1.Condition, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.CollisionCount != nil {
		in, out := &in.CollisionCount, &out.CollisionCount
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CommonStatus.
func (in *CommonStatus) DeepCopy() *CommonStatus {
	if in == nil {
		return nil
	}
	out := new(CommonStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ComponentStatus) DeepCopyInto(out *ComponentStatus) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComponentStatus.
func (in *ComponentStatus) DeepCopy() *ComponentStatus {
	if in == nil {
		return nil
	}
	out := new(ComponentStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *FakeGroup) DeepCopyInto(out *FakeGroup) {
	*out = *in
	if in.CollisionCountVal != nil {
		in, out := &in.CollisionCountVal, &out.CollisionCountVal
		*out = new(int32)
		**out = **in
	}
	out.Status = in.Status
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FakeGroup.
func (in *FakeGroup) DeepCopy() *FakeGroup {
	if in == nil {
		return nil
	}
	out := new(FakeGroup)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *GroupStatus) DeepCopyInto(out *GroupStatus) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GroupStatus.
func (in *GroupStatus) DeepCopy() *GroupStatus {
	if in == nil {
		return nil
	}
	out := new(GroupStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ObjectMeta) DeepCopyInto(out *ObjectMeta) {
	*out = *in
	if in.Labels != nil {
		in, out := &in.Labels, &out.Labels
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Annotations != nil {
		in, out := &in.Annotations, &out.Annotations
		*out = make(map[string]string, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMeta.
func (in *ObjectMeta) DeepCopy() *ObjectMeta {
	if in == nil {
		return nil
	}
	out := new(ObjectMeta)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Overlay) DeepCopyInto(out *Overlay) {
	*out = *in
	if in.Pod != nil {
		in, out := &in.Pod, &out.Pod
		*out = new(PodOverlay)
		(*in).DeepCopyInto(*out)
	}
	if in.PersistentVolumeClaims != nil {
		in, out := &in.PersistentVolumeClaims, &out.PersistentVolumeClaims
		*out = make([]PersistentVolumeClaimOverlay, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Overlay.
func (in *Overlay) DeepCopy() *Overlay {
	if in == nil {
		return nil
	}
	out := new(Overlay)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PD) DeepCopyInto(out *PD) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PD.
func (in *PD) DeepCopy() *PD {
	if in == nil {
		return nil
	}
	out := new(PD)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *PD) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDGroup) DeepCopyInto(out *PDGroup) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDGroup.
func (in *PDGroup) DeepCopy() *PDGroup {
	if in == nil {
		return nil
	}
	out := new(PDGroup)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *PDGroup) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDGroupList) DeepCopyInto(out *PDGroupList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]PDGroup, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDGroupList.
func (in *PDGroupList) DeepCopy() *PDGroupList {
	if in == nil {
		return nil
	}
	out := new(PDGroupList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *PDGroupList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDGroupSpec) DeepCopyInto(out *PDGroupSpec) {
	*out = *in
	out.Cluster = in.Cluster
	if in.Replicas != nil {
		in, out := &in.Replicas, &out.Replicas
		*out = new(int32)
		**out = **in
	}
	if in.SchedulePolicies != nil {
		in, out := &in.SchedulePolicies, &out.SchedulePolicies
		*out = make([]SchedulePolicy, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	in.Template.DeepCopyInto(&out.Template)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDGroupSpec.
func (in *PDGroupSpec) DeepCopy() *PDGroupSpec {
	if in == nil {
		return nil
	}
	out := new(PDGroupSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDGroupStatus) DeepCopyInto(out *PDGroupStatus) {
	*out = *in
	in.CommonStatus.DeepCopyInto(&out.CommonStatus)
	out.GroupStatus = in.GroupStatus
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDGroupStatus.
func (in *PDGroupStatus) DeepCopy() *PDGroupStatus {
	if in == nil {
		return nil
	}
	out := new(PDGroupStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDList) DeepCopyInto(out *PDList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]PD, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDList.
func (in *PDList) DeepCopy() *PDList {
	if in == nil {
		return nil
	}
	out := new(PDList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *PDList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDPorts) DeepCopyInto(out *PDPorts) {
	*out = *in
	if in.Client != nil {
		in, out := &in.Client, &out.Client
		*out = new(Port)
		**out = **in
	}
	if in.Peer != nil {
		in, out := &in.Peer, &out.Peer
		*out = new(Port)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDPorts.
func (in *PDPorts) DeepCopy() *PDPorts {
	if in == nil {
		return nil
	}
	out := new(PDPorts)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDServer) DeepCopyInto(out *PDServer) {
	*out = *in
	in.Ports.DeepCopyInto(&out.Ports)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDServer.
func (in *PDServer) DeepCopy() *PDServer {
	if in == nil {
		return nil
	}
	out := new(PDServer)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDSpec) DeepCopyInto(out *PDSpec) {
	*out = *in
	out.Cluster = in.Cluster
	if in.Topology != nil {
		in, out := &in.Topology, &out.Topology
		*out = make(Topology, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	in.PDTemplateSpec.DeepCopyInto(&out.PDTemplateSpec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDSpec.
func (in *PDSpec) DeepCopy() *PDSpec {
	if in == nil {
		return nil
	}
	out := new(PDSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDStatus) DeepCopyInto(out *PDStatus) {
	*out = *in
	in.CommonStatus.DeepCopyInto(&out.CommonStatus)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDStatus.
func (in *PDStatus) DeepCopy() *PDStatus {
	if in == nil {
		return nil
	}
	out := new(PDStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDTemplate) DeepCopyInto(out *PDTemplate) {
	*out = *in
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDTemplate.
func (in *PDTemplate) DeepCopy() *PDTemplate {
	if in == nil {
		return nil
	}
	out := new(PDTemplate)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PDTemplateSpec) DeepCopyInto(out *PDTemplateSpec) {
	*out = *in
	if in.Image != nil {
		in, out := &in.Image, &out.Image
		*out = new(string)
		**out = **in
	}
	in.Server.DeepCopyInto(&out.Server)
	in.Resources.DeepCopyInto(&out.Resources)
	out.UpdateStrategy = in.UpdateStrategy
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make([]Volume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Overlay != nil {
		in, out := &in.Overlay, &out.Overlay
		*out = new(Overlay)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PDTemplateSpec.
func (in *PDTemplateSpec) DeepCopy() *PDTemplateSpec {
	if in == nil {
		return nil
	}
	out := new(PDTemplateSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PersistentVolumeClaimOverlay) DeepCopyInto(out *PersistentVolumeClaimOverlay) {
	*out = *in
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	if in.Spec != nil {
		in, out := &in.Spec, &out.Spec
		*out = new(corev1.PersistentVolumeClaimSpec)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PersistentVolumeClaimOverlay.
func (in *PersistentVolumeClaimOverlay) DeepCopy() *PersistentVolumeClaimOverlay {
	if in == nil {
		return nil
	}
	out := new(PersistentVolumeClaimOverlay)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *PodOverlay) DeepCopyInto(out *PodOverlay) {
	*out = *in
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	if in.Spec != nil {
		in, out := &in.Spec, &out.Spec
		*out = new(corev1.PodSpec)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodOverlay.
func (in *PodOverlay) DeepCopy() *PodOverlay {
	if in == nil {
		return nil
	}
	out := new(PodOverlay)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Port) DeepCopyInto(out *Port) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Port.
func (in *Port) DeepCopy() *Port {
	if in == nil {
		return nil
	}
	out := new(Port)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ResourceRequirements) DeepCopyInto(out *ResourceRequirements) {
	*out = *in
	if in.CPU != nil {
		in, out := &in.CPU, &out.CPU
		x := (*in).DeepCopy()
		*out = &x
	}
	if in.Memory != nil {
		in, out := &in.Memory, &out.Memory
		x := (*in).DeepCopy()
		*out = &x
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceRequirements.
func (in *ResourceRequirements) DeepCopy() *ResourceRequirements {
	if in == nil {
		return nil
	}
	out := new(ResourceRequirements)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SchedulePolicy) DeepCopyInto(out *SchedulePolicy) {
	*out = *in
	if in.EvenlySpread != nil {
		in, out := &in.EvenlySpread, &out.EvenlySpread
		*out = new(SchedulePolicyEvenlySpread)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulePolicy.
func (in *SchedulePolicy) DeepCopy() *SchedulePolicy {
	if in == nil {
		return nil
	}
	out := new(SchedulePolicy)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SchedulePolicyEvenlySpread) DeepCopyInto(out *SchedulePolicyEvenlySpread) {
	*out = *in
	if in.Topologies != nil {
		in, out := &in.Topologies, &out.Topologies
		*out = make([]ScheduleTopology, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SchedulePolicyEvenlySpread.
func (in *SchedulePolicyEvenlySpread) DeepCopy() *SchedulePolicyEvenlySpread {
	if in == nil {
		return nil
	}
	out := new(SchedulePolicyEvenlySpread)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ScheduleTopology) DeepCopyInto(out *ScheduleTopology) {
	*out = *in
	if in.Topology != nil {
		in, out := &in.Topology, &out.Topology
		*out = make(Topology, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	if in.Weight != nil {
		in, out := &in.Weight, &out.Weight
		*out = new(int32)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScheduleTopology.
func (in *ScheduleTopology) DeepCopy() *ScheduleTopology {
	if in == nil {
		return nil
	}
	out := new(ScheduleTopology)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *SuspendAction) DeepCopyInto(out *SuspendAction) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SuspendAction.
func (in *SuspendAction) DeepCopy() *SuspendAction {
	if in == nil {
		return nil
	}
	out := new(SuspendAction)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TLS) DeepCopyInto(out *TLS) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLS.
func (in *TLS) DeepCopy() *TLS {
	if in == nil {
		return nil
	}
	out := new(TLS)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TLSCluster) DeepCopyInto(out *TLSCluster) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TLSCluster.
func (in *TLSCluster) DeepCopy() *TLSCluster {
	if in == nil {
		return nil
	}
	out := new(TLSCluster)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDB) DeepCopyInto(out *TiDB) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDB.
func (in *TiDB) DeepCopy() *TiDB {
	if in == nil {
		return nil
	}
	out := new(TiDB)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiDB) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBAuthToken) DeepCopyInto(out *TiDBAuthToken) {
	*out = *in
	out.JWKs = in.JWKs
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBAuthToken.
func (in *TiDBAuthToken) DeepCopy() *TiDBAuthToken {
	if in == nil {
		return nil
	}
	out := new(TiDBAuthToken)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBGroup) DeepCopyInto(out *TiDBGroup) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBGroup.
func (in *TiDBGroup) DeepCopy() *TiDBGroup {
	if in == nil {
		return nil
	}
	out := new(TiDBGroup)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiDBGroup) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBGroupList) DeepCopyInto(out *TiDBGroupList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TiDBGroup, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBGroupList.
func (in *TiDBGroupList) DeepCopy() *TiDBGroupList {
	if in == nil {
		return nil
	}
	out := new(TiDBGroupList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiDBGroupList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBGroupSpec) DeepCopyInto(out *TiDBGroupSpec) {
	*out = *in
	out.Cluster = in.Cluster
	if in.Replicas != nil {
		in, out := &in.Replicas, &out.Replicas
		*out = new(int32)
		**out = **in
	}
	if in.Service != nil {
		in, out := &in.Service, &out.Service
		*out = new(TiDBService)
		**out = **in
	}
	if in.SchedulePolicies != nil {
		in, out := &in.SchedulePolicies, &out.SchedulePolicies
		*out = make([]SchedulePolicy, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	in.Template.DeepCopyInto(&out.Template)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBGroupSpec.
func (in *TiDBGroupSpec) DeepCopy() *TiDBGroupSpec {
	if in == nil {
		return nil
	}
	out := new(TiDBGroupSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBGroupStatus) DeepCopyInto(out *TiDBGroupStatus) {
	*out = *in
	in.CommonStatus.DeepCopyInto(&out.CommonStatus)
	out.GroupStatus = in.GroupStatus
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBGroupStatus.
func (in *TiDBGroupStatus) DeepCopy() *TiDBGroupStatus {
	if in == nil {
		return nil
	}
	out := new(TiDBGroupStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBList) DeepCopyInto(out *TiDBList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TiDB, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBList.
func (in *TiDBList) DeepCopy() *TiDBList {
	if in == nil {
		return nil
	}
	out := new(TiDBList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiDBList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBPorts) DeepCopyInto(out *TiDBPorts) {
	*out = *in
	if in.Client != nil {
		in, out := &in.Client, &out.Client
		*out = new(Port)
		**out = **in
	}
	if in.Status != nil {
		in, out := &in.Status, &out.Status
		*out = new(Port)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBPorts.
func (in *TiDBPorts) DeepCopy() *TiDBPorts {
	if in == nil {
		return nil
	}
	out := new(TiDBPorts)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBProb) DeepCopyInto(out *TiDBProb) {
	*out = *in
	if in.Type != nil {
		in, out := &in.Type, &out.Type
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBProb.
func (in *TiDBProb) DeepCopy() *TiDBProb {
	if in == nil {
		return nil
	}
	out := new(TiDBProb)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBProbes) DeepCopyInto(out *TiDBProbes) {
	*out = *in
	if in.Readiness != nil {
		in, out := &in.Readiness, &out.Readiness
		*out = new(TiDBProb)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBProbes.
func (in *TiDBProbes) DeepCopy() *TiDBProbes {
	if in == nil {
		return nil
	}
	out := new(TiDBProbes)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBSecurity) DeepCopyInto(out *TiDBSecurity) {
	*out = *in
	if in.TLS != nil {
		in, out := &in.TLS, &out.TLS
		*out = new(TiDBTLS)
		(*in).DeepCopyInto(*out)
	}
	if in.BootstrapSQL != nil {
		in, out := &in.BootstrapSQL, &out.BootstrapSQL
		*out = new(corev1.LocalObjectReference)
		**out = **in
	}
	if in.AuthToken != nil {
		in, out := &in.AuthToken, &out.AuthToken
		*out = new(TiDBAuthToken)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBSecurity.
func (in *TiDBSecurity) DeepCopy() *TiDBSecurity {
	if in == nil {
		return nil
	}
	out := new(TiDBSecurity)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBServer) DeepCopyInto(out *TiDBServer) {
	*out = *in
	in.Ports.DeepCopyInto(&out.Ports)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBServer.
func (in *TiDBServer) DeepCopy() *TiDBServer {
	if in == nil {
		return nil
	}
	out := new(TiDBServer)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBService) DeepCopyInto(out *TiDBService) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBService.
func (in *TiDBService) DeepCopy() *TiDBService {
	if in == nil {
		return nil
	}
	out := new(TiDBService)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBSlowLog) DeepCopyInto(out *TiDBSlowLog) {
	*out = *in
	if in.Image != nil {
		in, out := &in.Image, &out.Image
		*out = new(string)
		**out = **in
	}
	in.Resources.DeepCopyInto(&out.Resources)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBSlowLog.
func (in *TiDBSlowLog) DeepCopy() *TiDBSlowLog {
	if in == nil {
		return nil
	}
	out := new(TiDBSlowLog)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBSpec) DeepCopyInto(out *TiDBSpec) {
	*out = *in
	out.Cluster = in.Cluster
	if in.Topology != nil {
		in, out := &in.Topology, &out.Topology
		*out = make(Topology, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	in.TiDBTemplateSpec.DeepCopyInto(&out.TiDBTemplateSpec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBSpec.
func (in *TiDBSpec) DeepCopy() *TiDBSpec {
	if in == nil {
		return nil
	}
	out := new(TiDBSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBStatus) DeepCopyInto(out *TiDBStatus) {
	*out = *in
	in.CommonStatus.DeepCopyInto(&out.CommonStatus)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBStatus.
func (in *TiDBStatus) DeepCopy() *TiDBStatus {
	if in == nil {
		return nil
	}
	out := new(TiDBStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBTLS) DeepCopyInto(out *TiDBTLS) {
	*out = *in
	if in.MySQL != nil {
		in, out := &in.MySQL, &out.MySQL
		*out = new(TLS)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBTLS.
func (in *TiDBTLS) DeepCopy() *TiDBTLS {
	if in == nil {
		return nil
	}
	out := new(TiDBTLS)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBTemplate) DeepCopyInto(out *TiDBTemplate) {
	*out = *in
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBTemplate.
func (in *TiDBTemplate) DeepCopy() *TiDBTemplate {
	if in == nil {
		return nil
	}
	out := new(TiDBTemplate)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiDBTemplateSpec) DeepCopyInto(out *TiDBTemplateSpec) {
	*out = *in
	if in.Image != nil {
		in, out := &in.Image, &out.Image
		*out = new(string)
		**out = **in
	}
	in.Server.DeepCopyInto(&out.Server)
	in.Probes.DeepCopyInto(&out.Probes)
	in.Resources.DeepCopyInto(&out.Resources)
	out.UpdateStrategy = in.UpdateStrategy
	if in.Security != nil {
		in, out := &in.Security, &out.Security
		*out = new(TiDBSecurity)
		(*in).DeepCopyInto(*out)
	}
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make([]Volume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.SlowLog != nil {
		in, out := &in.SlowLog, &out.SlowLog
		*out = new(TiDBSlowLog)
		(*in).DeepCopyInto(*out)
	}
	if in.Overlay != nil {
		in, out := &in.Overlay, &out.Overlay
		*out = new(Overlay)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiDBTemplateSpec.
func (in *TiDBTemplateSpec) DeepCopy() *TiDBTemplateSpec {
	if in == nil {
		return nil
	}
	out := new(TiDBTemplateSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlash) DeepCopyInto(out *TiFlash) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlash.
func (in *TiFlash) DeepCopy() *TiFlash {
	if in == nil {
		return nil
	}
	out := new(TiFlash)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiFlash) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashGroup) DeepCopyInto(out *TiFlashGroup) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashGroup.
func (in *TiFlashGroup) DeepCopy() *TiFlashGroup {
	if in == nil {
		return nil
	}
	out := new(TiFlashGroup)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiFlashGroup) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashGroupList) DeepCopyInto(out *TiFlashGroupList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TiFlashGroup, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashGroupList.
func (in *TiFlashGroupList) DeepCopy() *TiFlashGroupList {
	if in == nil {
		return nil
	}
	out := new(TiFlashGroupList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiFlashGroupList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashGroupSpec) DeepCopyInto(out *TiFlashGroupSpec) {
	*out = *in
	out.Cluster = in.Cluster
	if in.Replicas != nil {
		in, out := &in.Replicas, &out.Replicas
		*out = new(int32)
		**out = **in
	}
	if in.SchedulePolicies != nil {
		in, out := &in.SchedulePolicies, &out.SchedulePolicies
		*out = make([]SchedulePolicy, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	in.Template.DeepCopyInto(&out.Template)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashGroupSpec.
func (in *TiFlashGroupSpec) DeepCopy() *TiFlashGroupSpec {
	if in == nil {
		return nil
	}
	out := new(TiFlashGroupSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashGroupStatus) DeepCopyInto(out *TiFlashGroupStatus) {
	*out = *in
	in.CommonStatus.DeepCopyInto(&out.CommonStatus)
	out.GroupStatus = in.GroupStatus
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashGroupStatus.
func (in *TiFlashGroupStatus) DeepCopy() *TiFlashGroupStatus {
	if in == nil {
		return nil
	}
	out := new(TiFlashGroupStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashList) DeepCopyInto(out *TiFlashList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TiFlash, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashList.
func (in *TiFlashList) DeepCopy() *TiFlashList {
	if in == nil {
		return nil
	}
	out := new(TiFlashList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiFlashList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashLogTailer) DeepCopyInto(out *TiFlashLogTailer) {
	*out = *in
	if in.Image != nil {
		in, out := &in.Image, &out.Image
		*out = new(string)
		**out = **in
	}
	in.Resources.DeepCopyInto(&out.Resources)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashLogTailer.
func (in *TiFlashLogTailer) DeepCopy() *TiFlashLogTailer {
	if in == nil {
		return nil
	}
	out := new(TiFlashLogTailer)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashPorts) DeepCopyInto(out *TiFlashPorts) {
	*out = *in
	if in.Flash != nil {
		in, out := &in.Flash, &out.Flash
		*out = new(Port)
		**out = **in
	}
	if in.Metrics != nil {
		in, out := &in.Metrics, &out.Metrics
		*out = new(Port)
		**out = **in
	}
	if in.Proxy != nil {
		in, out := &in.Proxy, &out.Proxy
		*out = new(Port)
		**out = **in
	}
	if in.ProxyStatus != nil {
		in, out := &in.ProxyStatus, &out.ProxyStatus
		*out = new(Port)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashPorts.
func (in *TiFlashPorts) DeepCopy() *TiFlashPorts {
	if in == nil {
		return nil
	}
	out := new(TiFlashPorts)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashServer) DeepCopyInto(out *TiFlashServer) {
	*out = *in
	in.Ports.DeepCopyInto(&out.Ports)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashServer.
func (in *TiFlashServer) DeepCopy() *TiFlashServer {
	if in == nil {
		return nil
	}
	out := new(TiFlashServer)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashSpec) DeepCopyInto(out *TiFlashSpec) {
	*out = *in
	out.Cluster = in.Cluster
	if in.Topology != nil {
		in, out := &in.Topology, &out.Topology
		*out = make(Topology, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	in.TiFlashTemplateSpec.DeepCopyInto(&out.TiFlashTemplateSpec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashSpec.
func (in *TiFlashSpec) DeepCopy() *TiFlashSpec {
	if in == nil {
		return nil
	}
	out := new(TiFlashSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashStatus) DeepCopyInto(out *TiFlashStatus) {
	*out = *in
	in.CommonStatus.DeepCopyInto(&out.CommonStatus)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashStatus.
func (in *TiFlashStatus) DeepCopy() *TiFlashStatus {
	if in == nil {
		return nil
	}
	out := new(TiFlashStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashTemplate) DeepCopyInto(out *TiFlashTemplate) {
	*out = *in
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashTemplate.
func (in *TiFlashTemplate) DeepCopy() *TiFlashTemplate {
	if in == nil {
		return nil
	}
	out := new(TiFlashTemplate)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiFlashTemplateSpec) DeepCopyInto(out *TiFlashTemplateSpec) {
	*out = *in
	if in.Image != nil {
		in, out := &in.Image, &out.Image
		*out = new(string)
		**out = **in
	}
	in.Server.DeepCopyInto(&out.Server)
	in.Resources.DeepCopyInto(&out.Resources)
	out.UpdateStrategy = in.UpdateStrategy
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make([]Volume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.LogTailer != nil {
		in, out := &in.LogTailer, &out.LogTailer
		*out = new(TiFlashLogTailer)
		(*in).DeepCopyInto(*out)
	}
	if in.Overlay != nil {
		in, out := &in.Overlay, &out.Overlay
		*out = new(Overlay)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiFlashTemplateSpec.
func (in *TiFlashTemplateSpec) DeepCopy() *TiFlashTemplateSpec {
	if in == nil {
		return nil
	}
	out := new(TiFlashTemplateSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKV) DeepCopyInto(out *TiKV) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKV.
func (in *TiKV) DeepCopy() *TiKV {
	if in == nil {
		return nil
	}
	out := new(TiKV)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiKV) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVGroup) DeepCopyInto(out *TiKVGroup) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVGroup.
func (in *TiKVGroup) DeepCopy() *TiKVGroup {
	if in == nil {
		return nil
	}
	out := new(TiKVGroup)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiKVGroup) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVGroupList) DeepCopyInto(out *TiKVGroupList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TiKVGroup, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVGroupList.
func (in *TiKVGroupList) DeepCopy() *TiKVGroupList {
	if in == nil {
		return nil
	}
	out := new(TiKVGroupList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiKVGroupList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVGroupSpec) DeepCopyInto(out *TiKVGroupSpec) {
	*out = *in
	out.Cluster = in.Cluster
	if in.Replicas != nil {
		in, out := &in.Replicas, &out.Replicas
		*out = new(int32)
		**out = **in
	}
	if in.SchedulePolicies != nil {
		in, out := &in.SchedulePolicies, &out.SchedulePolicies
		*out = make([]SchedulePolicy, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	in.Template.DeepCopyInto(&out.Template)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVGroupSpec.
func (in *TiKVGroupSpec) DeepCopy() *TiKVGroupSpec {
	if in == nil {
		return nil
	}
	out := new(TiKVGroupSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVGroupStatus) DeepCopyInto(out *TiKVGroupStatus) {
	*out = *in
	in.CommonStatus.DeepCopyInto(&out.CommonStatus)
	out.GroupStatus = in.GroupStatus
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVGroupStatus.
func (in *TiKVGroupStatus) DeepCopy() *TiKVGroupStatus {
	if in == nil {
		return nil
	}
	out := new(TiKVGroupStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVList) DeepCopyInto(out *TiKVList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]TiKV, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVList.
func (in *TiKVList) DeepCopy() *TiKVList {
	if in == nil {
		return nil
	}
	out := new(TiKVList)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (in *TiKVList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVPorts) DeepCopyInto(out *TiKVPorts) {
	*out = *in
	if in.Client != nil {
		in, out := &in.Client, &out.Client
		*out = new(Port)
		**out = **in
	}
	if in.Status != nil {
		in, out := &in.Status, &out.Status
		*out = new(Port)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVPorts.
func (in *TiKVPorts) DeepCopy() *TiKVPorts {
	if in == nil {
		return nil
	}
	out := new(TiKVPorts)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVPreStop) DeepCopyInto(out *TiKVPreStop) {
	*out = *in
	if in.Image != nil {
		in, out := &in.Image, &out.Image
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVPreStop.
func (in *TiKVPreStop) DeepCopy() *TiKVPreStop {
	if in == nil {
		return nil
	}
	out := new(TiKVPreStop)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVServer) DeepCopyInto(out *TiKVServer) {
	*out = *in
	in.Ports.DeepCopyInto(&out.Ports)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVServer.
func (in *TiKVServer) DeepCopy() *TiKVServer {
	if in == nil {
		return nil
	}
	out := new(TiKVServer)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVSpec) DeepCopyInto(out *TiKVSpec) {
	*out = *in
	out.Cluster = in.Cluster
	if in.Topology != nil {
		in, out := &in.Topology, &out.Topology
		*out = make(Topology, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
	}
	in.TiKVTemplateSpec.DeepCopyInto(&out.TiKVTemplateSpec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVSpec.
func (in *TiKVSpec) DeepCopy() *TiKVSpec {
	if in == nil {
		return nil
	}
	out := new(TiKVSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVStatus) DeepCopyInto(out *TiKVStatus) {
	*out = *in
	in.CommonStatus.DeepCopyInto(&out.CommonStatus)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVStatus.
func (in *TiKVStatus) DeepCopy() *TiKVStatus {
	if in == nil {
		return nil
	}
	out := new(TiKVStatus)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVTemplate) DeepCopyInto(out *TiKVTemplate) {
	*out = *in
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVTemplate.
func (in *TiKVTemplate) DeepCopy() *TiKVTemplate {
	if in == nil {
		return nil
	}
	out := new(TiKVTemplate)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *TiKVTemplateSpec) DeepCopyInto(out *TiKVTemplateSpec) {
	*out = *in
	if in.Image != nil {
		in, out := &in.Image, &out.Image
		*out = new(string)
		**out = **in
	}
	in.Server.DeepCopyInto(&out.Server)
	in.Resources.DeepCopyInto(&out.Resources)
	out.UpdateStrategy = in.UpdateStrategy
	if in.Volumes != nil {
		in, out := &in.Volumes, &out.Volumes
		*out = make([]Volume, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.PreStop != nil {
		in, out := &in.PreStop, &out.PreStop
		*out = new(TiKVPreStop)
		(*in).DeepCopyInto(*out)
	}
	if in.Overlay != nil {
		in, out := &in.Overlay, &out.Overlay
		*out = new(Overlay)
		(*in).DeepCopyInto(*out)
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TiKVTemplateSpec.
func (in *TiKVTemplateSpec) DeepCopy() *TiKVTemplateSpec {
	if in == nil {
		return nil
	}
	out := new(TiKVTemplateSpec)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in Topology) DeepCopyInto(out *Topology) {
	{
		in := &in
		*out = make(Topology, len(*in))
		for key, val := range *in {
			(*out)[key] = val
		}
		return
	}
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Topology.
func (in Topology) DeepCopy() Topology {
	if in == nil {
		return nil
	}
	out := new(Topology)
	in.DeepCopyInto(out)
	return *out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *UpdateStrategy) DeepCopyInto(out *UpdateStrategy) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UpdateStrategy.
func (in *UpdateStrategy) DeepCopy() *UpdateStrategy {
	if in == nil {
		return nil
	}
	out := new(UpdateStrategy)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Volume) DeepCopyInto(out *Volume) {
	*out = *in
	if in.For != nil {
		in, out := &in.For, &out.For
		*out = make([]VolumeUsage, len(*in))
		copy(*out, *in)
	}
	out.Storage = in.Storage.DeepCopy()
	if in.StorageClassName != nil {
		in, out := &in.StorageClassName, &out.StorageClassName
		*out = new(string)
		**out = **in
	}
	if in.VolumeAttributesClassName != nil {
		in, out := &in.VolumeAttributesClassName, &out.VolumeAttributesClassName
		*out = new(string)
		**out = **in
	}
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Volume.
func (in *Volume) DeepCopy() *Volume {
	if in == nil {
		return nil
	}
	out := new(Volume)
	in.DeepCopyInto(out)
	return out
}

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *VolumeUsage) DeepCopyInto(out *VolumeUsage) {
	*out = *in
	return
}

// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeUsage.
func (in *VolumeUsage) DeepCopy() *VolumeUsage {
	if in == nil {
		return nil
	}
	out := new(VolumeUsage)
	in.DeepCopyInto(out)
	return out
}
