func (in *IstioSidecar) DeepCopy() *IstioSidecar {
	if in == nil {
		return nil
	}
	out := new(IstioSidecar)
	in.DeepCopyInto(out)
	return out
}
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IstioSidecar.
package v1alpha1
import (
	monitoringv1 "github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1"
	corev1 "k8s.io/api/core/v1"
	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	runtime "k8s.io/apimachinery/pkg/runtime"
)
func (in *AWSInfo) DeepCopyInto(out *AWSInfo) {
	*out = *in
	out.IAM = in.IAM
	return
}
func (in *AWSInfo) DeepCopy() *AWSInfo {
	if in == nil {
		return nil
	}
	out := new(AWSInfo)
	in.DeepCopyInto(out)
	return out
}
func (in *Canary) DeepCopyInto(out *Canary) {
	*out = *in
	return
}
func (in *Canary) DeepCopy() *Canary {
	if in == nil {
		return nil
	}
	out := new(Canary)
	in.DeepCopyInto(out)
	return out
}
func (in *Cluster) DeepCopyInto(out *Cluster) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	out.Status = in.Status
	return
}
func (in *Cluster) DeepCopy() *Cluster {
	if in == nil {
		return nil
	}
	out := new(Cluster)
	in.DeepCopyInto(out)
	return out
}
func (in *Cluster) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *ClusterConfig) DeepCopyInto(out *ClusterConfig) {
	*out = *in
	if in.CertificateAuthorityData != nil {
		in, out := &in.CertificateAuthorityData, &out.CertificateAuthorityData
		*out = make([]byte, len(*in))
		copy(*out, *in)
	}
	return
}
func (in *ClusterConfig) DeepCopy() *ClusterConfig {
	if in == nil {
		return nil
	}
	out := new(ClusterConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterIngresses) DeepCopyInto(out *ClusterIngresses) {
	*out = *in
	in.Public.DeepCopyInto(&out.Public)
	in.Private.DeepCopyInto(&out.Private)
	return
}
func (in *ClusterIngresses) DeepCopy() *ClusterIngresses {
	if in == nil {
		return nil
	}
	out := new(ClusterIngresses)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterKubernetesStatus) DeepCopyInto(out *ClusterKubernetesStatus) {
	*out = *in
	return
}
func (in *ClusterKubernetesStatus) DeepCopy() *ClusterKubernetesStatus {
	if in == nil {
		return nil
	}
	out := new(ClusterKubernetesStatus)
	in.DeepCopyInto(out)
	return out
}
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
}
func (in *ClusterList) DeepCopy() *ClusterList {
	if in == nil {
		return nil
	}
	out := new(ClusterList)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *ClusterSecretSource) DeepCopyInto(out *ClusterSecretSource) {
	*out = *in
	return
}
func (in *ClusterSecretSource) DeepCopy() *ClusterSecretSource {
	if in == nil {
		return nil
	}
	out := new(ClusterSecretSource)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterSecretTarget) DeepCopyInto(out *ClusterSecretTarget) {
	*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
}
func (in *ClusterSecretTarget) DeepCopy() *ClusterSecretTarget {
	if in == nil {
		return nil
	}
	out := new(ClusterSecretTarget)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterSecrets) DeepCopyInto(out *ClusterSecrets) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	in.Status.DeepCopyInto(&out.Status)
	return
}
func (in *ClusterSecrets) DeepCopy() *ClusterSecrets {
	if in == nil {
		return nil
	}
	out := new(ClusterSecrets)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterSecrets) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *ClusterSecretsList) DeepCopyInto(out *ClusterSecretsList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]ClusterSecrets, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}
func (in *ClusterSecretsList) DeepCopy() *ClusterSecretsList {
	if in == nil {
		return nil
	}
	out := new(ClusterSecretsList)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterSecretsList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *ClusterSecretsSpec) DeepCopyInto(out *ClusterSecretsSpec) {
	*out = *in
	out.Source = in.Source
	in.Target.DeepCopyInto(&out.Target)
	return
}
func (in *ClusterSecretsSpec) DeepCopy() *ClusterSecretsSpec {
	if in == nil {
		return nil
	}
	out := new(ClusterSecretsSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterSecretsStatus) DeepCopyInto(out *ClusterSecretsStatus) {
	*out = *in
	if in.Secrets != nil {
		in, out := &in.Secrets, &out.Secrets
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}
func (in *ClusterSecretsStatus) DeepCopy() *ClusterSecretsStatus {
	if in == nil {
		return nil
	}
	out := new(ClusterSecretsStatus)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterSpec) DeepCopyInto(out *ClusterSpec) {
	*out = *in
	if in.Config != nil {
		in, out := &in.Config, &out.Config
		*out = new(ClusterConfig)
		(*in).DeepCopyInto(*out)
	}
	if in.ScalingFactorString != nil {
		in, out := &in.ScalingFactorString, &out.ScalingFactorString
		*out = new(string)
		**out = **in
	}
	in.Ingresses.DeepCopyInto(&out.Ingresses)
	return
}
func (in *ClusterSpec) DeepCopy() *ClusterSpec {
	if in == nil {
		return nil
	}
	out := new(ClusterSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *ClusterStatus) DeepCopyInto(out *ClusterStatus) {
	*out = *in
	out.Kubernetes = in.Kubernetes
	return
}
func (in *ClusterStatus) DeepCopy() *ClusterStatus {
	if in == nil {
		return nil
	}
	out := new(ClusterStatus)
	in.DeepCopyInto(out)
	return out
}
func (in *ConfigSelector) DeepCopyInto(out *ConfigSelector) {
	*out = *in
	if in.LabelSelector != nil {
		in, out := &in.LabelSelector, &out.LabelSelector
		*out = new(v1.LabelSelector)
		(*in).DeepCopyInto(*out)
	}
	return
}
func (in *ConfigSelector) DeepCopy() *ConfigSelector {
	if in == nil {
		return nil
	}
	out := new(ConfigSelector)
	in.DeepCopyInto(out)
	return out
}
func (in *ExternalTest) DeepCopyInto(out *ExternalTest) {
	*out = *in
	if in.Timeout != nil {
		in, out := &in.Timeout, &out.Timeout
		*out = new(v1.Duration)
		**out = **in
	}
	if in.LastUpdated != nil {
		in, out := &in.LastUpdated, &out.LastUpdated
		*out = (*in).DeepCopy()
	}
	return
}
func (in *ExternalTest) DeepCopy() *ExternalTest {
	if in == nil {
		return nil
	}
	out := new(ExternalTest)
	in.DeepCopyInto(out)
	return out
}
func (in *FaultInjector) DeepCopyInto(out *FaultInjector) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
	in.Spec.DeepCopyInto(&out.Spec)
	out.Status = in.Status
	return
}
func (in *FaultInjector) DeepCopy() *FaultInjector {
	if in == nil {
		return nil
	}
	out := new(FaultInjector)
	in.DeepCopyInto(out)
	return out
}
func (in *FaultInjector) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *FaultInjectorList) DeepCopyInto(out *FaultInjectorList) {
	*out = *in
	out.TypeMeta = in.TypeMeta
	in.ListMeta.DeepCopyInto(&out.ListMeta)
	if in.Items != nil {
		in, out := &in.Items, &out.Items
		*out = make([]FaultInjector, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}
func (in *FaultInjectorList) DeepCopy() *FaultInjectorList {
	if in == nil {
		return nil
	}
	out := new(FaultInjectorList)
	in.DeepCopyInto(out)
	return out
}
func (in *FaultInjectorList) DeepCopyObject() runtime.Object {
	if c := in.DeepCopy(); c != nil {
		return c
	}
	return nil
}
func (in *FaultInjectorSpec) DeepCopyInto(out *FaultInjectorSpec) {
	*out = *in
	if in.HTTPPortFaults != nil {
		in, out := &in.HTTPPortFaults, &out.HTTPPortFaults
		*out = make([]HTTPPortFault, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	return
}
func (in *FaultInjectorSpec) DeepCopy() *FaultInjectorSpec {
	if in == nil {
		return nil
	}
	out := new(FaultInjectorSpec)
	in.DeepCopyInto(out)
	return out
}
func (in *FaultInjectorStatus) DeepCopyInto(out *FaultInjectorStatus) {
	*out = *in
	return
}
func (in *FaultInjectorStatus) DeepCopy() *FaultInjectorStatus {
	if in == nil {
		return nil
	}
	out := new(FaultInjectorStatus)
	in.DeepCopyInto(out)
	return out
}
func (in *GeometricScaling) DeepCopyInto(out *GeometricScaling) {
	*out = *in
	if in.Delay != nil {
		in, out := &in.Delay, &out.Delay
		*out = new(v1.Duration)
		**out = **in
	}
	return
}
func (in *GeometricScaling) DeepCopy() *GeometricScaling {
	if in == nil {
		return nil
	}
	out := new(GeometricScaling)
	in.DeepCopyInto(out)
	return out
}
func (in *IAMInfo) DeepCopyInto(out *IAMInfo) {
	*out = *in
	return
}
func (in *IAMInfo) DeepCopy() *IAMInfo {
	if in == nil {
		return nil
	}
	out := new(IAMInfo)
	in.DeepCopyInto(out)
	return out
}
func (in *IngressInfo) DeepCopyInto(out *IngressInfo) {
	*out = *in
	if in.DefaultDomains != nil {
		in, out := &in.DefaultDomains, &out.DefaultDomains
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}
func (in *IngressInfo) DeepCopy() *IngressInfo {
	if in == nil {
		return nil
	}
	out := new(IngressInfo)
	in.DeepCopyInto(out)
	return out
}
func (in *IstioHTTPPortConfig) DeepCopyInto(out *IstioHTTPPortConfig) {
	*out = *in
	if in.Retries != nil {
		in, out := &in.Retries, &out.Retries
		*out = new(Retries)
		(*in).DeepCopyInto(*out)
	}
	if in.Timeout != nil {
		in, out := &in.Timeout, &out.Timeout
		*out = new(v1.Duration)
		**out = **in
	}
	return
}
func (in *IstioHTTPPortConfig) DeepCopy() *IstioHTTPPortConfig {
	if in == nil {
		return nil
	}
	out := new(IstioHTTPPortConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *IstioPortConfig) DeepCopyInto(out *IstioPortConfig) {
	*out = *in
	in.HTTP.DeepCopyInto(&out.HTTP)
	return
}
func (in *IstioPortConfig) DeepCopy() *IstioPortConfig {
	if in == nil {
		return nil
	}
	out := new(IstioPortConfig)
	in.DeepCopyInto(out)
	return out
}
func (in *IstioSidecar) DeepCopyInto(out *IstioSidecar) {
	*out = *in
	if in.EgressHosts != nil {
		in, out := &in.EgressHosts, &out.EgressHosts
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	return
}