//go:build !ignore_autogenerated

// Copyright 2020-2023 Project Capsule Authors.
// SPDX-License-Identifier: Apache-2.0

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

package rules

import (
	"github.com/projectcapsule/capsule/pkg/api/rbac"
	"github.com/projectcapsule/capsule/pkg/api/runtime"
	"k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

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

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

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

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *MetadataValueRule) DeepCopyInto(out *MetadataValueRule) {
	*out = *in
	if in.Values != nil {
		in, out := &in.Values, &out.Values
		*out = make([]runtime.ExpressionMatch, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Default != nil {
		in, out := &in.Default, &out.Default
		*out = new(string)
		**out = **in
	}
	if in.Managed != nil {
		in, out := &in.Managed, &out.Managed
		*out = new(string)
		**out = **in
	}
}

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NamespaceRuleBodyNamespace) DeepCopyInto(out *NamespaceRuleBodyNamespace) {
	*out = *in
	if in.Audience != nil {
		in, out := &in.Audience, &out.Audience
		*out = make([]Audience, len(*in))
		copy(*out, *in)
	}
	if in.Quota != nil {
		in, out := &in.Quota, &out.Quota
		*out = make([]ResourceQuotaRule, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Enforce != nil {
		in, out := &in.Enforce, &out.Enforce
		*out = new(NamespaceRuleEnforceBody)
		(*in).DeepCopyInto(*out)
	}
}

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NamespaceRuleBodyTenant) DeepCopyInto(out *NamespaceRuleBodyTenant) {
	*out = *in
	if in.NamespaceRuleBodyNamespace != nil {
		in, out := &in.NamespaceRuleBodyNamespace, &out.NamespaceRuleBodyNamespace
		*out = new(NamespaceRuleBodyNamespace)
		(*in).DeepCopyInto(*out)
	}
	if in.NamespaceSelector != nil {
		in, out := &in.NamespaceSelector, &out.NamespaceSelector
		*out = new(metav1.LabelSelector)
		(*in).DeepCopyInto(*out)
	}
	in.Permissions.DeepCopyInto(&out.Permissions)
}

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NamespaceRuleEnforceBody) DeepCopyInto(out *NamespaceRuleEnforceBody) {
	*out = *in
	in.Workloads.DeepCopyInto(&out.Workloads)
	in.Services.DeepCopyInto(&out.Services)
	if in.Metadata != nil {
		in, out := &in.Metadata, &out.Metadata
		*out = make([]MetadataRule, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	in.Ingress.DeepCopyInto(&out.Ingress)
}

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NamespaceRuleEnforceIngressBody) DeepCopyInto(out *NamespaceRuleEnforceIngressBody) {
	*out = *in
	if in.Types != nil {
		in, out := &in.Types, &out.Types
		*out = make([]IngressType, len(*in))
		copy(*out, *in)
	}
	if in.Hostnames != nil {
		in, out := &in.Hostnames, &out.Hostnames
		*out = make([]runtime.ExpressionMatch, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NamespaceRuleEnforceServicesBody) DeepCopyInto(out *NamespaceRuleEnforceServicesBody) {
	*out = *in
	if in.Types != nil {
		in, out := &in.Types, &out.Types
		*out = make([]ServiceType, len(*in))
		copy(*out, *in)
	}
	if in.LoadBalancers != nil {
		in, out := &in.LoadBalancers, &out.LoadBalancers
		*out = new(ServiceLoadBalancerRule)
		(*in).DeepCopyInto(*out)
	}
	if in.ExternalIPs != nil {
		in, out := &in.ExternalIPs, &out.ExternalIPs
		*out = new(ServiceExternalIPRule)
		(*in).DeepCopyInto(*out)
	}
	if in.ExternalNames != nil {
		in, out := &in.ExternalNames, &out.ExternalNames
		*out = new(ServiceExternalNameRule)
		(*in).DeepCopyInto(*out)
	}
	if in.NodePorts != nil {
		in, out := &in.NodePorts, &out.NodePorts
		*out = new(ServiceNodePortRule)
		(*in).DeepCopyInto(*out)
	}
}

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NamespaceRuleEnforceWorkloadsBody) DeepCopyInto(out *NamespaceRuleEnforceWorkloadsBody) {
	*out = *in
	if in.Targets != nil {
		in, out := &in.Targets, &out.Targets
		*out = make([]WorkloadValidationTarget, len(*in))
		copy(*out, *in)
	}
	if in.Resources != nil {
		in, out := &in.Resources, &out.Resources
		*out = new(WorkloadResourceRules)
		(*in).DeepCopyInto(*out)
	}
	if in.QoSClasses != nil {
		in, out := &in.QoSClasses, &out.QoSClasses
		*out = make([]v1.PodQOSClass, len(*in))
		copy(*out, *in)
	}
	if in.Registries != nil {
		in, out := &in.Registries, &out.Registries
		*out = make([]OCIRegistry, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Schedulers != nil {
		in, out := &in.Schedulers, &out.Schedulers
		*out = make([]runtime.ExpressionMatch, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
}

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NamespaceRulePermissionBody) DeepCopyInto(out *NamespaceRulePermissionBody) {
	*out = *in
	if in.Bindings != nil {
		in, out := &in.Bindings, &out.Bindings
		*out = make([]rbac.AdditionalRoleBindingsSpec, len(*in))
		for i := range *in {
			(*in)[i].DeepCopyInto(&(*out)[i])
		}
	}
	if in.Promotions != nil {
		in, out := &in.Promotions, &out.Promotions
		*out = make([]*NamespaceRulePromotionRule, len(*in))
		for i := range *in {
			if (*in)[i] != nil {
				in, out := &(*in)[i], &(*out)[i]
				*out = new(NamespaceRulePromotionRule)
				(*in).DeepCopyInto(*out)
			}
		}
	}
}

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *NamespaceRulePromotionRule) DeepCopyInto(out *NamespaceRulePromotionRule) {
	*out = *in
	if in.ClusterRoles != nil {
		in, out := &in.ClusterRoles, &out.ClusterRoles
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
	if in.Selector != nil {
		in, out := &in.Selector, &out.Selector
		*out = new(metav1.LabelSelector)
		(*in).DeepCopyInto(*out)
	}
}

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *OCIRegistry) DeepCopyInto(out *OCIRegistry) {
	*out = *in
	in.ExpressionMatch.DeepCopyInto(&out.ExpressionMatch)
	if in.Policy != nil {
		in, out := &in.Policy, &out.Policy
		*out = make([]v1.PullPolicy, len(*in))
		copy(*out, *in)
	}
}

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

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

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServiceExternalIPRule) DeepCopyInto(out *ServiceExternalIPRule) {
	*out = *in
	if in.CIDRs != nil {
		in, out := &in.CIDRs, &out.CIDRs
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
}

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

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

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServiceLoadBalancerRule) DeepCopyInto(out *ServiceLoadBalancerRule) {
	*out = *in
	if in.CIDRs != nil {
		in, out := &in.CIDRs, &out.CIDRs
		*out = make([]string, len(*in))
		copy(*out, *in)
	}
}

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

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

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *ServiceNodePortRule) DeepCopyInto(out *ServiceNodePortRule) {
	*out = *in
	if in.Ports != nil {
		in, out := &in.Ports, &out.Ports
		*out = make([]ServiceNodePortRange, len(*in))
		copy(*out, *in)
	}
}

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

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

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

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

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

// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *WorkloadResourceRules) DeepCopyInto(out *WorkloadResourceRules) {
	*out = *in
	if in.Requests != nil {
		in, out := &in.Requests, &out.Requests
		*out = make(map[v1.ResourceName]WorkloadResourceRequestPolicy, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
	if in.Limits != nil {
		in, out := &in.Limits, &out.Limits
		*out = make(map[v1.ResourceName]WorkloadResourceLimitPolicy, len(*in))
		for key, val := range *in {
			(*out)[key] = *val.DeepCopy()
		}
	}
}

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